У меня случай, когда мне нужно перенести данные со старого сервера:хост1на новый сервер:хост2. Проблема в том, что хост 1 не видит хост 2., но я могу использовать другой сервер (локальный хост) по SSH к хосту 1 и хосту 2.
Представьте, что это должно работать так:хост1 -> локальный хост -> хост2
Как использовать rsync для копирования файлов между host1 и host2? Я попробовал эту команду на сервере localhost, но она говоритИсточник и пункт назначения не могут быть одновременно удаленными.
rsync -avz host1:/workspace host2:/rasv1/old_code-de
решение1
решение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 не поддерживает копирование с удаленного сервера на удаленный сервер.
Если вам нужно простое копирование файлов, вы можете просто использовать опцию scp
with -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
.