並行地從特定資料夾讀取 scp 文件

並行地從特定資料夾讀取 scp 文件

我想將 scp 檔案放入machineA我的文件中machineB,這就是我正在做的事情。我正在將一堆文件從primary資料夾machineAprimary資料夾machineB以及secondary資料夾machineAsecondary資料夾逐一複製machineB

trinity@machineB:~$ scp trinity@machineA:/data01/primary/* /data01/primary/
trinity@machineB:~$ scp trinity@machineA:/data02/secondary/* /data02/secondary/

有什麼方法可以並行複製多個檔案嗎?例如一個資料夾中一次五個檔案?因此,我不想一次複製一個文件,而是想分別從主資料夾或輔助資料夾複製五個文件?

基本上我想將主資料夾和輔助資料夾中的所有內容複製machineAmachineB並行中。

如果我可以使用的話,我的盒子上還安裝了 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/*'

相關內容