1つのコマンドを使用して、同じディレクトリ内の複数のフォルダをコピーする必要があります。だから最初にこれをしました。
sftp> mget -r folder1 folder2
このコマンドはfolder1
ターゲットサーバーにコピーされますが、名前はfolder2
。
おそらく、次のことを行う必要があります。しかし、私は試していませんでした。
sftp> get -r folder1 && sleep 5 && get -r folder2
私はこれを試していませんが、うまくいくと思います。
より良い選択肢がありますか?
答え1
mget
sftpのサブコマンドは次のとおりです。ニックネームget
:
static const struct CMD cmds[] = {
{ "bye", I_QUIT, NOARGS },
...
{ "get", I_GET, REMOTE },
{ "mget", I_GET, REMOTE },
...
};
これget
サブコマンド構文は次のとおりです。
get [-afPpr] remote-path [local-path]
get
1 つ以上の引数を指定すると、mget
2 番目の引数を最初の引数の名前変更先として扱います。したがって、一度に複数のディレクトリを検索することはできず、個別にインポートする必要があります。
mget -r folder1
mget -r folder2
sftp構文はシェルスタイルのコマンド接続も許可しないため、次のコマンドは使用できません。またget -r folder1 && ...
sleep
、他の目的(ローカルプロセスの監視、ネットワークを介した数秒の節約など)で遅延が必要ない限り、getコマンド間を試す必要はありません。
あるいは、次の点をsftp
考慮してくださいscp
。
scp -r user@host:folder1 user@host:folder2 /local/directory
...再帰的にコピーされます。離れて folder1
そしてfolder2
ディレクトリ地元の /local/directory
。
答え2
フォルダがフォルダ1とフォルダ2の場合は、1つのコマンドでインポートできます。
get -r folder[1-2]
get [-afPpr] リモートパス [ローカルパス] はリモートパスを
検索し、ローカルコンピュータに保存します。ローカルパス名を指定しない場合、その名前はリモートコンピュータの名前と同じです。リモートパスには以下を含めることができます。グローバル(7)文字であり、複数のファイルと一致することができます。その場合、local-pathが指定され、local-pathはディレクトリを指定する必要があります。