在 Linux 伺服器之間快速傳輸檔案的最簡單方法?

在 Linux 伺服器之間快速傳輸檔案的最簡單方法?

我需要將檔案從一台 CentOS 伺服器傳輸到另一台伺服器。大約每 10 分鐘傳輸 5MB 檔案。不需要加密。

什麼是快速傳輸文件的簡單方法?

有沒有比ftp更簡單的東西呢?

謝謝!

答案1

同步

在使用 ftp 或 tftp 之前我會使用 rsync。

更多選擇和(根據我的經驗)更可靠的傳輸。

答案2

透過 ssh 進行 tar 是可以的,但透過 netcat 透過 TCP 進行 tar 的開銷幾乎是最低的!如果這是一次性的事情,請嘗試:

在接收器上:

nc -l -p 8989 | tar x

在寄件者上:

tar cf - /source-path | nc (receiving host ip address) 8989

如果這是您經常做的事情,我可能會使用 rsync。

答案3

有兩個人提到了 tar over ssh,但沒有說怎麼做。作為記錄,基本過程是運行:

tar cf - files... | ssh remotehost 'cd /destination && tar xvf -'

或者,如果您想從接收端開始傳輸:

ssh remotehost 'cd /source && tar cf - files' | tar xvf -

與 Evan 的 netcat 解決方案相比,這樣做的優點是整個過程可以從一台電腦啟動;您不必協調兩個 netcat 呼叫。如果您需要它自動運行,您可以設定 ssh 密鑰,讓您無需密碼即可建立連接,並使用該密鑰進行這些連接。

ssh 有一個 -C 選項來壓縮其資料流,或者您可以使用 GNU tar 的內建壓縮功能:

tar zcf - files... | ssh remotehost 'cd /destination && tar xzvf -'

Rsync 是另一個選擇,但它的強項是更新接收端已存在的檔案。我發現當使用它傳輸另一端尚不存在的檔案時,它比 scp 或 tar/ssh 慢。

答案4

如果您必須通過 scp/ssh,我的實驗表明,目前預設啟用的最快密碼是 RC4。您透過 ' 指定密碼-c arcfour' 在你的 ssh/scp 指令中:

對於初始副本:

  • scp -c arcfour -r foo/ desthost:/destdir

更新:

  • rsync -e 'ssh -c arcfour' -r foo/ desthost:/destdir

相關內容