2014-04-23 35 views
0

我剛開始使用Fabric,看起來像一個非常有用的工具。我可以寫一個小劇本在我的亞馬遜EC2主機並行運行一些命令,像這樣:如何使用Fabric從多個節點同時複製?

@parallel 
def runs_in_parallel(): 
    sudo("sudo rm -rf /usr/lib/jvm/j2sdk1.6-oracle") 

另外,我還編寫了另一個腳本,所有Hadoop的日誌從所有EC2節點複製到我的本地機器。此腳本創建一個文件夾,其中包含每個節點的1個文件夾作爲其IP地址,並將該節點的日誌複製到名爲folder的IP地址中。例如: -

2014-04-22-15-52-55 
    50.17.94.170 
     hadoop-logs 
    54.204.157.86 
     hadoop-logs 
    54.205.86.22 
     hadoop-logs 

現在我想用面料,這樣我可以在平行復制日誌,以節省時間做這個副本任務。我認爲我可以像我在第一個代碼片段中那樣輕鬆地完成它,但這不會起作用,因爲它運行的命令爲遠程服務器。到目前爲止,我還不知道如何做到這一點。任何幫助深表感謝。

回答

0

您可能會使用get()命令來處理下拉文件。你想把它們製作成tarball,並讓它們在你的客戶端上使用獨特的文件名,以防止它們互相破壞。

+0

感謝您的回覆摩根。但是我不認爲get()並行執行,或者它不執行? – Bhushan

+0

並行運行命令/任務。如果它正在執行get(),它也會並行執行。你可以在100個主機上並行執行一個任務,但任務是執行「local(」ping google.com「)'。或者我誤解了你想要完成的任務? – Morgan

+0

我試圖在同一臺機器上同時運行多個命令,從一臺機器向多臺機器打開多個rsynch通道並從它們下載內容。 – Bhushan

相關問題