Параллельный rsync на нескольких хостах - PullRequest
1 голос
/ 07 февраля 2012

У меня есть требование получить набор файлов с 15 разных хостов.По сути, это просто текстовые файлы.

Я смог установить ключи и прочее ssh так, чтобы scp, ssh, rsync и т. Д. Теперь не имели пароля.

Теперь я ищу нужноеспособ извлечения этих файлов, т. е. выборка их быстро и способом, который я могу отследить (т. е. не фоновый процесс, который, я надеюсь, когда-нибудь завершится, а затем начнется обработка этих файлов)

На данный момент я не зависим от языка.Подойдет что-нибудь из shell, perl, python, ruby ​​и т. Д.

Хотя мне следует спросить у экспертов здесь.

Ответы [ 2 ]

2 голосов
/ 07 февраля 2012

Используйте ткань !В частности, вам может быть интересна страница Параллельное выполнение .

Пример:

from fabric.api import env, run

env.user = 'implicit_user'
env.hosts = ['host1', 'explicit_user@host2', 'host3']

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

Вывод:

$ fab print_user

[host1] out: implicit_user
[explicit_user@host2] out: explicit_user
[host3] out: implicit_user

Done.
Disconnecting from host1... done.
Disconnecting from host2... done.
Disconnecting from host3... done.
1 голос
/ 07 февраля 2012

Попробуйте 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.
...