Назад | Перейти на главную страницу

Самый простой способ быстрой передачи файлов между серверами Linux?

Мне нужно перенести файлы с одного сервера CentOS на другой. Будет передавать файлы размером 5 МБ примерно каждые 10 минут. Не нужно шифрование.

Что легкого было для быстрой передачи файлов?

Есть что-нибудь попроще ftp?

Спасибо!

rsync

Я бы использовал rsync до того, как использовал ftp или tftp.

Больше возможностей и (по моему опыту) более надежная передача.

Использование tar через ssh в порядке, но использование tar через TCP через netcat требует минимальных накладных расходов, насколько это возможно! Если это одноразовая вещь, попробуйте следующее:

На ресивере:

nc -l -p 8989 | tar x

Об отправителе:

tar cf - /source-path | nc (receiving host ip address) 8989

Если вы собираетесь делать это регулярно, я бы, вероятно, использовал rsync.

Два человека упомянули tar вместо ssh, но не сказали, как это сделать. Для записи основная процедура состоит в следующем:

tar cf - files... | ssh remotehost 'cd /destination && tar xvf -'

Или, если вы хотите начать переводы с принимающей стороны:

ssh remotehost 'cd /source && tar cf - files' | tar xvf -

Преимущество этого способа по сравнению с решением Эвана netcat состоит в том, что все это можно запустить с одного компьютера; вам не нужно координировать два вызова netcat. Если вам нужно, чтобы это запускалось автоматически, вы можете настроить ключ ssh, который позволит вам устанавливать соединения без парольной фразы и использовать этот ключ для этих подключений.

ssh имеет параметр -C для сжатия потока данных, или вы можете использовать встроенную способность сжатия GNU tar:

tar zcf - files... | ssh remotehost 'cd /destination && tar xzvf -'

Rsync - еще один вариант, но его сильная сторона заключается в обновлении файлов, которые уже существуют на принимающей стороне. Я обнаружил, что он работает медленнее, чем scp или tar / ssh при использовании его для передачи файлов, которые еще не существуют на другом конце.

Я бы использовал scp или tar над ssh, честно говоря. Шифрование действительно замедляет работу, но простота настройки и использования, надежность и (субъективно, конечно) знакомство заставляют меня принять удар, если я не действительно нужна такая скорость.

Вы можете ускорить передачу ssh, указав ему также использовать более быстрый шифр, чем по умолчанию. По умолчанию обычно 3des и вы обычно можете сделать -c des, так что, очевидно, будет быстрее, и -c blowfish также представлен столь же быстро, хотя тщательно не тестировал.

(Во времена SSHv1 вы часто могли -c none, но я думаю, кто-то решил, что это плохая джуджу.

Если вам нужно использовать scp / ssh, мои эксперименты показывают, что самый быстрый шифр, включенный по умолчанию в наши дни, - это RC4. Вы указываете шифр через '-c arcfour'в вашей команде ssh / scp:

для начальной копии:

  • scp -c arcfour -r foo/ desthost:/destdir

для обновлений:

  • rsync -e 'ssh -c arcfour' -r foo/ desthost:/destdir

Rsync - хороший способ, потому что, если вы обнаружите, что передаете одни и те же файлы более одного раза, это ускорит копирование, как показано в этой цитате из справочной страницы.

   rsync is a program that behaves in much the same way that rcp does, but
   has many more options and uses  the  rsync  remote-update  protocol  to
   greatly  speed  up  file  transfers  when the destination file is being
   updated.
   The rsync remote-update protocol allows rsync to transfer just the dif-
   ferences between two sets of files across the network connection, using
   an efficient  checksum-search  algorithm  described  in  the  technical
   report that accompanies this package.

FTP - это довольно просто, но может быть еще проще создать общий ресурс NFS на одном компьютере и смонтировать его на другом. Затем копирование файлов будет состоять из выполнения cp из одного каталога в другой.

Если вам нужна скорость, вы можете использовать netcat и tar. Это будет быстрее, чем ssh, rsync или scp в локальной сети, где шифрование не является проблемой. Погуглите "netcat tar".

DestinationServer

nc -l -p 7878 | tar -C /target/dir -xzf -

SourceServer

tar -cz /source/dir | nc DestinationServer 7878

Очевидно, для этого требуется, чтобы netcat был установлен. Google "netcat tar" для получения дополнительной информации.

Я считаю, что вы уже решили свою проблему, но если ваш ssh работает на другом порту (а не на стандартном порту 22), вы можете использовать это

rsync -avz --rsh = 'ssh -pXXXXX' / локальный / каталог / root@192.168.1.2: / удаленный / каталог

Примечание: - замените XXXXX на свой номер порта - замените 192.16.1.2 на правильный IP-адрес удаленного сервера.

https://www.npmjs.org/package/gist-cli

https://github.com/settings/applications#personal-access-tokens

или этот:

https://github.com/defunkt/gist

Используйте команду gist для загрузки и скачивания