Мне нужно перенести файлы с одного сервера 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".
nc -l -p 7878 | tar -C /target/dir -xzf -
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 для загрузки и скачивания