Command-Line

如何通過 FTP 並行上傳目錄?

  • September 22, 2017

我需要通過 FTP 上傳一個包含相當複雜的樹(很多子目錄等)的目錄。我無法壓縮這個目錄,因為除了 FTP 之外我沒有任何訪問目的地的權限——例如​​沒有 tar。由於距離很遠(美國 => 澳大利亞),因此延遲非常高。

遵循如何在 Unix 中使用 mput 將多個文件夾 FTP 到另一台伺服器中的建議?,我目前正在使用ncftp執行傳輸mput -r。不幸的是,這似乎一次傳輸一個文件,在通信成本上浪費了大量可用頻寬。

有什麼辦法可以並行化這個過程,即同時從這個目錄上傳多個文件?當然,我可以手動拆分它並mput -r在每個塊上執行,但這是一個乏味的過程。

CLI 方法是首選,因為客戶端機器實際上是通過 SSH 訪問的無頭伺服器。

lftp 將使用命令來執行此操作mirror -R -P 20 localpath- 鏡像在位置之間同步,並且 -R 使用遠端伺服器作為目標,而 P 一次執行 20 次並行傳輸。

如中所述man lftp

  mirror [OPTS] [source [target]]

  Mirror specified source directory to local target directory. If  target
  directory ends with a slash, the source base name is appended to target
  directory name. Source and/or target can be URLs pointing  to  directo‐
  ries.


       -R,    --reverse                 reverse mirror (put files)
       -P,    --parallel[=N]            download N files in parallel

引用自:https://unix.stackexchange.com/questions/110008