Мне нужно перенести файлы с одного сервера CentOS на другой. Передаст 5 МБ файлов примерно каждые 10 минут. Не нужно шифрование.
Что легкого было для быстрой передачи файлов?
Есть ли что-то проще, чем ftp?
Благодарность!
Мне нужно перенести файлы с одного сервера CentOS на другой. Передаст 5 МБ файлов примерно каждые 10 минут. Не нужно шифрование.
Что легкого было для быстрой передачи файлов?
Есть ли что-то проще, чем ftp?
Благодарность!
Ответы:
Rsync
Я бы использовал rsync до того, как использовал ftp или tftp.
Больше вариантов и (по моему опыту) более надежный перевод.
tar over ssh - это нормально, но tar over 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' / local / dir / root@192.168.1.2: / remote / dir
Примечание: - замените 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 для загрузки и скачивания