我想將 scp 檔案放入machineA
我的文件中machineB
,這就是我正在做的事情。我正在將一堆文件從primary
資料夾machineA
到primary
資料夾machineB
以及secondary
資料夾machineA
到secondary
資料夾逐一複製machineB
。
trinity@machineB:~$ scp trinity@machineA:/data01/primary/* /data01/primary/
trinity@machineB:~$ scp trinity@machineA:/data02/secondary/* /data02/secondary/
有什麼方法可以並行複製多個檔案嗎?例如一個資料夾中一次五個檔案?因此,我不想一次複製一個文件,而是想分別從主資料夾或輔助資料夾複製五個文件?
基本上我想將主資料夾和輔助資料夾中的所有內容複製machineA
到machineB
並行中。
如果我可以使用的話,我的盒子上還安裝了 GNU Parallel。我嘗試了下面的命令,但它不起作用。我預計它應該一次並行複製 5 個文件,直到從該文件夾複製所有內容。
parallel -j 5 scp trinity@machineA:/data01/primary/* /data01/primary/
我的並行文法有什麼問題嗎?我可以從遠端資料夾並行複製五個文件直到從其中複製所有內容的最佳方法是什麼?
答案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/*'