Мне нужно перенести файлы с одного сервера CentOS на другой. Буду передавать файлы по 5 МБ каждые 10 минут. Не нужно шифрование.
Что такое простой способ быстрой передачи файлов?
Есть ли что-то проще FTP?
Спасибо!
решение1
rsync
Я бы использовал rsync прежде, чем использовать ftp или tftp.
Больше возможностей и (по моему опыту) более надежный перевод.
решение2
tar через ssh — это нормально, но tar через TCP через netcat — это самое низконакладное, что вы можете получить! Если это разовая вещь, попробуйте:
На приемнике:
nc -l -p 8989 | tar x
Об отправителе:
tar cf - /source-path | nc (receiving host ip address) 8989
Если вы собираетесь делать это регулярно, я бы, наверное, использовал rsync.
решение3
Два человека упомянули 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, когда использую его для передачи файлов, которые еще не существуют на другом конце.
решение4
Если вам нужно пройти через scp/ssh, мои эксперименты показывают, что самый быстрый шифр, включенный по умолчанию в наши дни, это RC4. Вы указываете шифр через '-c дугачетверо' в вашей команде ssh/scp:
для первоначальной копии:
scp -c arcfour -r foo/ desthost:/destdir
для обновлений:
rsync -e 'ssh -c arcfour' -r foo/ desthost:/destdir