Linux

同時執行多個 scp 執行緒

  • February 9, 2016

同時執行多個 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會快很多。

引用自:https://serverfault.com/questions/326490