我需要將檔案從一台 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