Как использовать rsync для копирования файлов между двумя удаленными серверами на основе локального сервера?

Как использовать rsync для копирования файлов между двумя удаленными серверами на основе локального сервера?

У меня случай, когда мне нужно перенести данные со старого сервера:хост1на новый сервер:хост2. Проблема в том, что хост 1 не видит хост 2., но я могу использовать другой сервер (локальный хост) по SSH к хосту 1 и хосту 2.

Представьте, что это должно работать так:хост1 -> локальный хост -> хост2

Как использовать rsync для копирования файлов между host1 и host2? Я попробовал эту команду на сервере localhost, но она говоритИсточник и пункт назначения не могут быть одновременно удаленными.

 rsync -avz host1:/workspace host2:/rasv1/old_code-de

решение1

Я остановился на решении отhttps://unix.stackexchange.com/users/312074/eblock

с

scp -3 host1 host2

решение2

Вы можете использовать туннелирование для перенаправления rsync с помощью ssh.

Войдите в систему как user@host1 и создайте туннель к host2 через ваш «localhost» (назовем его «your_host», чтобы избежать путаницы):

ssh <your_host_user>@<your_host> -L 8080:<host2_ip>:22

Оставьте этот терминал открытым, затем на другом терминале с хоста 1 введите:

rsync -avzh -e "ssh -p 8080" <source_file> <host2_user>@127.0.0.1:/<target_folder>

Конечно, вы можете использовать любой другой порт вместо 8080. Что касается использования другого метода, не связанного с ssh, я думаю, что это возможно, но я не проверял.

решение3

Насколько мне известно, rsync не поддерживает копирование с удаленного сервера на удаленный сервер.

Если вам нужно простое копирование файлов, вы можете просто использовать опцию scpwith -3, как указал @eblock

 

Если вам нужен rsync, вы можете смонтировать оба сервера в локальную папку с помощьюsshfs

sshfs user@server1:/path/on/server1 /local/path1
sshfs user@server2:/path/on/server2 /local/path2

И затем скопируйте файлы между локальными папками:

rsync -av /local/path1 /local/path2

Чтобы размонтировать:

fusermount -u /local/path1
fusermount -u /local/path2

Хотя я не уверен насчет скорости/производительности sshfs.

Связанный контент