Параллельный rsync на нескольких хостах

1

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

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

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

На данный момент я язык агностик. Все, что угодно от оболочки, perl, python, ruby и т.д.

Просто, хотя я должен спросить у экспертов здесь.

  • 0
    Посмотрите на PDSH, он может вам помочь, pdsh может выполнять несколько удаленных команд параллельно. pdsh использует «скользящее окно» (или разветвление) потоков, чтобы сэкономить ресурсы на хосте-инициаторе, одновременно позволяя тайм-аутам некоторых соединений
Теги:
rsync

2 ответа

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

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

Пример:

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.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню