Linux
同時執行多個 scp 執行緒
同時執行多個 scp 執行緒:
背景:
我經常發現自己鏡像了一組伺服器文件,這些伺服器文件中包含數千個1kb-3kb 的小文件。所有伺服器都連接到 1Gbps 埠,通常分佈在各種數據中心。
問題:
SCP 一個接一個地傳輸這些小文件,而且需要很長時間,我覺得我在浪費我擁有的美麗的網路資源。
解決方案?:
我有個主意;創建一個腳本,將文件分成相等的數量,並啟動 5-6 個 scp 執行緒,理論上會快 5-6 倍,不是嗎?但是我沒有任何linux腳本經驗!
問題):
- 對上述問題有更好的解決方案嗎?
- 是否已經存在類似的東西?
- 如果沒有,是否有人會給我一個開始,或幫助我?
- 如果不是 2 或 3,哪裡是開始尋找學習 linux 腳本的好地方?像 bash 或其他。
我會這樣做:
tar -cf - /manyfiles | ssh dest.server 'tar -xf - -C /manyfiles'
tar
根據您要傳輸的文件,在命令中啟用壓縮是有意義的:
tar -czf - /manyfiles | ssh dest.server 'tar -xzf - -C /manyfiles'
為命令選擇一個對 CPU 更友好的密碼
ssh
(如 arcfour)也可能是有意義的:tar -cf - /manyfiles | ssh -c arcfour dest.server 'tar -xf - -C /manyfiles'
或者將兩者結合起來,但這真的取決於你的瓶頸是什麼。
如果您進行增量同步,顯然
rsync
會快很多。