Существует ли простой способ передачи файлов между двумя SSH / SFTP-серверами? Идеальным решением была бы FileZilla, но она позволяет вам только создать соединение между локальным и удаленным, но не между удаленным и удаленным.
Теоретически я мог бы открыть два окна Nautilus и подключить к некоторым ssh://server1/path/to/folder
и ssh://server2/path/to/folder
затем просто вытащить файлы из одной в другую сторону. Мой опыт показывает, что это очень нестабильно. Передача файлов с размером, равным, например, 10 МБ, не является проблемой, но передача, т. Е. 10 ГБ, часто приводила к тому, что Nautilus зависал и оставался там при необходимости ps -e | grep nautilus
-> kill -9 <pid>
. Я также проверил то же самое с Немо и Кахой. Хотя Nemo имеет тенденцию быть более стабильным, чем два других, он все еще не совершенен и также время от времени ломается. FileZilla чрезвычайно стабильна, никогда не ломалась, но она не очень гибкая из-за упомянутого факта, что она может подключаться только к одному SSH-серверу.
Конечно, я также могу смонтировать папку sshfs
, но это своего рода неудобное решение. Слишком много предварительной работы, чтобы запустить простую передачу.
Есть ли какое-либо приложение, которое может обрабатывать переводы между двумя SSH-серверами без перерыва? Perfect - это что-то вроде FileZilla, которая снова подхватывает работу, если соединение прервано.
Ответы:
Если вы используете версию Ubuntu, которая все еще поддерживается, то ваша
scp
команда предоставит-3
переключатель, который позволяет копировать файлы с remote1 на remote2 через localhost :Вы также можете опустить
-3
выключатель, но тогда вам будет нужен открытый ключ (id_rsa.pub
) изuser1@remote1
в файлauthorized_keys
изuser2@remote2
:scp
потом под капотом делаетssh user1@remote1
сначала и оттудаscp /path/to/file1 user2@remote2:/path/to/file2
. Вот почему учетные данные должны распространяться иначе, чем-3
решение.Другими словами:
scp -3 remote1:file1 remote2:file2
передает файл с remote1 на localhost, а затем обратно на remote2 . Данные перемещаются по remote1 → localhost → remote2 . Таким образом, localhost является третьей стороной в этом сценарии-3
. Чтобы это работало, вам понадобятся учетные данные с localhost на remote1 и remote2, потому что localhost подключается к ним обоим.scp remote1:file1 remote2:file2
копирует файл непосредственно с remote1 на remote2 со скоростью, с которой они связаны друг с другом. localhost здесь не задействован (кроме выдачи команды). Данные перемещаются удаленно1 → удаленно2 . Чтобы это работало, вам понадобятся учетные данные от localhost только на remote1, но дополнительно вам понадобятся учетные данные remote1 на remote2, потому что localhost подключается только к remote1, а затем remote1 подключается к remote2 .Если возможно, я бы выбрал второй подход. Как уже отмечалось в некоторых комментариях:
обычносетевой кабель между remote1 и remote2 гораздо толще, чем кабель между ними и localhost .источник
-3
.В большинстве случаев два сервера ssh могут связаться друг с другом (или, по крайней мере, один может связаться с другим), и опять же в большинстве случаев интернет рабочей станции намного хуже, чем любой из серверов.
Если это так, заказ одного сервера для переноса на другой - это путь.
Проверьте
nohup.out
на сервере server1 на наличие ошибок.Если доступность сервера противоположна, вы можете изменить, какая машина является главной:
источник
Возможно, вы можете использовать один из нескольких интерфейсов GUI для rsync:
Есть ли приложение с графическим интерфейсом для команды rsync?
Или, возможно, вы можете использовать rsync непосредственно из командной строки для подключения к обоим удаленным серверам:
«Как rsync файлы между двумя пультами»
Я часто захожу на один сервер с помощью ssh, а затем из командной строки этого сервера использую rsync для передачи или извлечения файлов на другой удаленный сервер - как правило, это происходит намного быстрее, чем пытаться передать файлы через какой-то третий компьютер.
Rsync достаточно умен, чтобы выполнить какую-то работу, а затем, если что-то пойдет не так и прервет процесс, он может позже возобновить работу с того места, где остановился.
источник
Вам нужно использовать протокол SCP.
scp file you want to transfer login@address_of_second_server:/path_where_you_want_to_save
источник