У меня есть несколько больших файлов, которые мне нужно скопировать с одной машины Linux на около 20 других машин Linux, все в одной локальной сети, как можно быстрее. Какие инструменты/методы лучше всего подойдут для копирования этих файлов, учитывая, что это не будет одноразовой копией. Эти машины никогда не будут подключены к Интернету, и безопасность не является проблемой.
Обновлять:
Причина, по которой я спрашиваю об этом, заключается в том, что (насколько я понимаю) мы в настоящее время используем scp
последовательный метод для копирования файлов на каждую из машин, и мне сообщили, что это «слишком медленно», и ищут более быструю альтернативу. Согласно тому, что мне сказали, попытка распараллелить вызовы scp
просто еще больше замедляет процесс из-за поиска на жестком диске.
решение1
BitTorrent. Это то, как Twitter использует некоторые вещи внутри себя.
http://engineering.twitter.com/2010/07/murder-fast-datacenter-code-deploys.html(ссылка на веб-архив)
решение2
Как насчетУФТП, он использует многоадресную передачу для доставки файлов по UDP нескольким клиентам одновременно. Не для всех, и я не эксперт в этом, но, похоже, он делает то, что вам нужно.
решение3
Вы пробовали копировать эти данные с помощью rsync
? Если у вас локальная сеть 1 Гбит или быстрее, копирование более 4*20 ГБ не должно быть проблемой.
Как часто будет происходить эта копия? Имеет ли значение, если на ее завершение уйдет несколько минут?
решение4
Самым быстрым методом, вероятно, будет настройка общего ресурса NFS и извлечение больших файлов из этого общего репозитория на каждой машине (NFS очень быстрый и имеет небольшие накладные расходы).
Вы можете добавить одну или две дополнительные сетевые карты к исходному серверу и объединить их вместе, чтобы повысить пропускную способность.
Реализация может быть простой задачей cron на каждом целевом сервере, которая слепо извлекает данные из общего ресурса каждый час/день/какой угодно. Вы также можете настроить демон для опроса новых файлов; вы также можете просто написать скрипт сеанса управления SSH (с парами ключей) в каждом целевом ящике и указать им извлекать файл при выполнении вашего скрипта.