machineA
scpファイルを私のファイルに入れたいのですが、machineB
これが私がすることです。primary
フォルダからフォルダmachineA
へ、フォルダからフォルダへ複数のファイルを1つずつコピーしています。primary
machineB
secondary
machineA
secondary
machineB
trinity@machineB:~$ scp trinity@machineA:/data01/primary/* /data01/primary/
trinity@machineB:~$ scp trinity@machineA:/data02/secondary/* /data02/secondary/
複数のファイルを同時にコピーする方法はありますか? 1つのフォルダに一度に5つのファイルが含まれていますか?その後、一度に1つのファイルをコピーするのではなく、1次フォルダまたは2次フォルダから5つのファイルを個別にコピーしたいと思います。
machineA
デフォルトでは、プライマリフォルダとセカンダリフォルダのすべての項目を並列にコピーしたいと思いますmachineB
。
利用できる場合は、私のボックスにもGNU Parallelがインストールされています。以下のコマンドを試しましたが、動作しません。フォルダからすべてがコピーされるまで、一度に5つのファイルを並列にコピーする必要があると思います。
parallel -j 5 scp trinity@machineA:/data01/primary/* /data01/primary/
並列構文に問題がありますか?すべてがコピーされるまで、リモートフォルダから5つのファイルを並列にコピーするための最良の方法は何ですか?
答え1
並列接続で速度が速くなるのはなぜですか? SCPは、スループットやパフォーマンスに影響を与えずに少数の小さなファイルを転送できる非常に簡単なツールです。より多くの並列プロセスで実行する方が少し速くなりますが、効果は大きくありません。別の方法は次のとおりです。
- より良いスループットとよりスマートなレプリケーションを実現するには
sftp
(十分である必要があります)、たとえば次のようにします。-r
ControlMaster
並列TCP接続のオーバーヘッドを除去するために使用されます。- 正しいパラメータの使用
parallel
次から始めますsftp
。
sftp -r trinity@machineA:/data01/primary/ /data01/primary/
答え2
*リモート側で拡張する必要があります。
ssh machineA 'parallel -j 5 scp {} machineB:/data01/primary/ ::: /data01/primary/*'