我有一个情况,当我需要从旧服务器移动数据时:主机1到新服务器:主机2。 问题是host1看不到host2,但我可以使用另一台服务器(本地主机)通过 SSH 连接到主机 1 和主机 2。
想象一下它应该像这样工作:主机1->本地主机->主机2
如何使用 rsync 在 host1 和 host2 之间复制文件?我在本地主机服务器上尝试了这个命令,但它说源和目标不能同时位于远程。
rsync -avz host1:/workspace host2:/rasv1/old_code-de
答案1
答案2
您可以使用隧道通过 ssh 重定向 rsync。
开始以 user@host1 身份登录,并通过“localhost”创建到 host2 的隧道(我们将其称为“your_host”以避免混淆):
ssh <your_host_user>@<your_host> -L 8080:<host2_ip>:22
保持该终端打开,然后在 host1 的另一个终端上键入:
rsync -avzh -e "ssh -p 8080" <source_file> <host2_user>@127.0.0.1:/<target_folder>
当然你可以使用任何其他端口来代替8080。至于使用其他不涉及ssh的方法,我认为是可能的,但我没有测试。
答案3
据我所知,rsync 不支持从远程服务器复制到远程服务器。
如果您只需要简单的文件复制,您可以使用scp
@eblock-3
指出的选项
如果您需要 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
。