2012-02-07 91 views
1

我有一個要求從15個不同的主機獲取一組文件。 這些在本質上只是文本文件。多臺主機上的並行rsync

我已經能夠設置ssh密鑰和東西,以便現在scp,ssh,rsync等無密碼。

現在我正在尋找正確的方式來獲取這些文件,即取他們快速的方式我可以跟蹤(即不是一個後臺進程,我希望將某個時候完成的,然後開始處理這些文件)

截至目前我是語言不可知論者。 任何shell,perl,python,ruby等都可以。

雖然我應該問這裏的專家。

+0

直視PDSH,它可以幫助你,PDSH可以並行運行多個遠程命令。 pdsh使用線程的「滑動窗口」(或扇出)來節省啓動主機上的資源,同時允許某些連接超時 – avasal 2012-02-07 05:58:27

回答

1

嘗試的Perl Net::OpenSSH::Parallel

use Net::OpenSSH::Parallel; 

my $pssh = Net::OpenSSH::Parallel->new; 
$pssh->add_host($_) for @hosts; 

$pssh->push('*', scp_get => '/remote/file/path', '/local/file/path-%HOST%'); 
$pssh->run; 

# do whatever you want with the local files. 
2

使用fabric!特別是,您可能會發現Parallel execution頁面很有趣。

例子:

from fabric.api import env, run 

env.user = 'implicit_user' 
env.hosts = ['host1', '[email protected]', 'host3'] 

def print_user(): 
    with hide('running'): 
     run('echo "%(user)s"' % env) 

輸出:

$ fab print_user 

[host1] out: implicit_user 
[[email protected]] out: explicit_user 
[host3] out: implicit_user 

Done. 
Disconnecting from host1... done. 
Disconnecting from host2... done. 
Disconnecting from host3... done. 
相關問題