我怎樣才能通過 Internet 延遲連結輕鬆(例如像 rsync 或 SCP 一樣簡單)進行高速 (1gpbs) 文件傳輸?
每年幾次,我需要通過 Internet 傳輸大量文件(20+GB)(延遲 20-100 毫秒),但伺服器之間的連接速度相當快,約為 1gbps。不幸的是,當我使用 rsync 這樣做時,它會出現各種各樣的問題並且反复無法使連接飽和,一次只能使用所有連接不到一秒鐘,並且經常使用幾分鐘(< 1mbps,可能為零)結束。我的硬碟驅動器和兩端的 CPU 都沒有固定在 100% 的使用率上,因此它們都不是瓶頸。SCP 的行為方式相同。
然而,速度測試在測試期間設法使我的連接完全飽和(比rsync 長得多)。通過在 Cloudflare 上使用 HTTP 和多執行緒下載器 (aria2c),我可以獲得一些成功,但它仍然不會使我的連接飽和——它只是防止它接近於零。有趣的是,在不通過 Cloudflare 時,aria2c 也不會使我的連接飽和。
在我提出這個問題之前的研究中,似乎 TCP 視窗可能與此有關,但我沒有正確理解那是什麼,也不知道如何更改它(我能找到的唯一資訊在 Internet 上是在速度測試的上下文中,速度測試有一個命令行標誌,但 rsync 和 SCP 都沒有在其手冊頁中記錄任何此類標誌)。但是,這沒有用,因為我不知道如何使用這些知識來修復我的下載速度。
因此,我問,我怎樣才能像現在使用 rsync、scp 或 http(通過 nginx)一樣輕鬆地(例如,無需使用自定義編譯或支付專有產品),使我的快速連接飽和以進行批量文件傳輸? 一個理想的答案會給我一組我可以使用的 rsync 標誌,以便完全解決這個問題。一個可能仍然有用的更現實的答案是一個特定的標準 Linux 實用程序,它可以在不進行重大調整的情況下完成我想要的。我確信存在這樣的事情,因為我確信我不是唯一需要通過 Internet 傳輸大文件的人。
使用
lftp
我能夠將我的連接推到最大容量(900Mbps),你需要這樣的東西 -lftp -e 'mirror --parallel=10 --use-pget-n=10 /var/vtemp /var/vtemp' sftp://root@XX.XX.XX.XX
。我面臨的唯一問題是執行幾個小時後吞吐量下降。