2012-05-28 49 views
4

我寫的代碼中使用面料到所有的網絡設備來部署和並列化方面不知道如何rsync vs. upload project工程和最短的時間面料:rsync_project的可擴展性VS upload_project

是否有任何基準?

我可以rsync並行100臺機器嗎?限制因素是什麼?

rsync_project(
     env.root, 
     exclude=RSYNC_EXCLUDE, 
     delete=True, 
     extra_opts=extra_opts, 
    ) 

同樣什麼是upload_project的限制因素?數字上的sftp限制是多少?

@parallel 
def testapp(): 
    with cd('~/projects'): 
     upload_project('./receiver', '/home/sysadmin/projects') 

從一種預感立場來看,因爲焦油僅需要進行一次,然後它的SFTP上傳的項目應該會更好。或者是上面顯示的示例多次?

織物是否進行某種節流以確保網絡不會窒息到極限?

有人可以幫忙嗎?

回答

2

在基準rsync和upload_project之前,您必須知道rsync只能傳輸differential data。當您的部署僅包含少量更改時,Rsync將比upload_project更加高效。

delete = True表示本地刪除的文件將被遠程刪除。這可能是你想要的。

如果你堅持,我不得不說基準測試結果將取決於文件數量和大小。例如,如果您有1K大小的1G文件,rsync將比upload_project慢得多。因爲後者總是打包tar/gzip然後傳輸這個大文件。

最後,面料沒有「焦油緩存」,就會重複焦油每個部署,因爲the code寫爲:

finally: 
     run("rm -f %s" % tar_file) 
finally: 
    local("rm -rf %s" % tmp_folder) 

但你可以添加一些緩存或手動註釋掉他們。

對於網絡的事情,面料使他們爲sftp具有擁塞窗口使 確保網絡不會窒息。

+14

delete = True不會將rsync轉換爲scp。這意味着已經在本地刪除的文件將被遠程刪除。這可能是你想要的。 – MiniQuark

+0

@MiniQuark我根據你關於delete = true的觀點改變了答案。 – gagarine