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