バックグラウンド タスクを wait コマンドで使用できます。Wait コマンドを使用すると、次の行を処理する前にすべてのバックグラウンド タスクが完了します。つまり、エコーは 3 つのノードすべての scp が完了した後に実行されます。
#!/bin/bash
scp -i anuruddha.pem myfile1.tar [email protected]:/tmp &
scp -i anuruddha.pem myfile2.tar [email protected]:/tmp &
scp -i anuruddha.pem myfile.tar [email protected]:/tmp &
wait
echo "SCP completed"
SSH は、いわゆる「多重化」を行うことができます。つまり、1 つの (1 つのサーバーに対して) より多くの接続を行うことができます。欲しいものを手に入れる方法の1つかもしれません。 「ControlMaster」などのキーワードを検索
2 番目の方法は、より多くの接続を使用して、すべてのジョブをバックグラウンドで送信することです:
for file in file1 file2 file3 ; do
scp $file server:/tmp/ &
done
しかし、これはあなたの質問に対する答えです - 「複数のファイルを同時にコピーする方法」。速度を上げるために、より弱い暗号化 (rc4 など) を使用できます。また、ハード ドライブがボトルネックになる可能性があることも忘れないでください。SCP は暗黙的に転送速度を制限しないためです。
最後に rsync を使用します - 場合によっては、scp よりもはるかに高速です...
これが役立つかどうかはわかりませんが、通常はソースでファイルをアーカイブ (圧縮は必要ありません。アーカイブするだけで十分です) し、ダウンロードして展開します。これにより、プロセスが大幅に高速化されます。アーカイブ前は 1 GB のダウンロードに 8 時間以上かかりましたが、アーカイブ後は同じことを行うのに 8 分未満かかりました