Как скопировать файлы на несколько хостов по сети?

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

Как я могу скопировать файлы на несколько хостов по сети? Какие у меня есть возможности?

Примечание. Этот вопрос относится к Как удаленно найти версию машины с Ubuntu?

4
задан 13 April 2017 в 15:24

3 ответа

1118 Я понимаю, что вы, вероятно, хотите только чего-то простого, но есть десятки способов сделать это. Но сначала мы хотим иметь возможность контролировать все компьютеры одновременно.

Это может показаться странным направлением, но это сэкономит вам время, когда вы захотите отправить завершение работы, перезагрузку, обновление на все компьютеры.

clusterssh

Давайте установим clusterssh и запустим команду для подключения ко всем нашим серверам одновременно (это может быть невозможно для 200 одновременно - у меня нет 200 компьютеров для тестирования включите!)

sudo apt-get install clusterssh
cssh user@first_computer:port user@second_computer:port ...

Это приведет к появлению небольших окон вывода для каждого соединения (почему я говорю, что 200 может быть растяжкой) и одного глобального диалога ввода. Оттуда вы можете отправить одну и ту же команду всем своим серверам.

Если вы хотите сделать это из командной строки, и это может поддерживать 200 соединений, вы можете посмотреть флаг -a для cssh. Вы можете бросить каждому серверу команду (или строку команд). Он подключится, выполнит и закроет соединение.

cssh -a 'cd directory; ls'  user@first_computer:port user@second_computer:port 

Вы можете упростить ваши соединения, используя мощную конфигурацию clusterssh. Откройте man cssh и пройдите в секцию FILES. Он объясняет, как вы можете создать файл /etc/clusters, чтобы позволить вам быстро создавать группы (называемые тегами), например:

clusters = <tag1> <tag2> <tag3>
<tag1> = host1 host2 host3
<tag2> = user@host4 user@host5 host6
<tag3> = <tag1> <tag2>

Затем вы можете сделать:

cssh -T 'tag2' -a 'cd directory; ls'

Использовать Центральный репозиторий

Я не имею в виду дебо-репо (но это тоже возможно, я думаю), скорее что-то вроде git или brz. Это может быть что-то простое, например, веб-сервер или сетевой ресурс. Если пропускная способность сети имеет узкие места, то что-то вроде торрент-сервера может быть даже лучшим курсом (именно так Facebook обновляет все их узлы)

Скажите вашей сети, чтобы загрузить файлы

Отсюда это просто соединяя точки. Используя cssh, вы просто скажете всем своим компьютерам извлечь файл и делать с ним все, что нужно.

1127 Я предлагаю вам начать с малого. Получите общий доступ к файлу, а затем попробуйте простой кластер из пары компьютеров и посмотрите, как он работает. Расширьте это.

Я предлагаю, чтобы даже после того, как вы закончили, вы держите кластер из пары компьютеров для тестирования, прежде чем отправлять вещи в основную группу.

0
ответ дан 13 April 2017 в 15:24

В качестве альтернативы вы можете сохранить его на основе толчка. Самым простым способом для этого является написание сценария, который:

  1. Перебирает список серверов
  2. Подключается к серверу и копирует файлы (здесь есть две опции): [ 1113]

    1. Использует sshfs для локального монтирования удаленной файловой системы, cp / rsync файлы, fusermount -u каталог, в который вы ее монтировали (для размонтирования удаленной системы). Продолжить.
    2. Просто используйте сетевые возможности rsync для копирования файлов.

      rsync /localdir/ user@remote:/remotedir
      
0
ответ дан 13 April 2017 в 15:24

[Ответ Oli продвинулся, в то время как я вводил]

Альтернатива кластерам параллельна-scp. Это - часть pssh пакета

Необходимо предоставить список хостов в текстовом файле (например, hosts.txt), и затем Вы выходите:

parallel-scp -h hosts.txt file2copy.dat /target/directory

Консультируйтесь со страницей справочника к комплекту Ваши конкретные потребности. Это не должно поражать пределы для слишком многих соединений, так как это не требует для открытия живых соединений со всеми, как cssh делает это попробует это последовательно.

PS: Настраивание основанной на ключе авторизации, конечно, сделает это намного легче, но я подозреваю, что распределение Вашего ключа к 200 системам в 1-м месте могло бы состоять в том, почему Вы задаете этот вопрос...

1
ответ дан 13 April 2017 в 15:24

Другие вопросы по тегам:

Похожие вопросы: