Answers:
实际上,您不需要像Antoine所建议的那样允许通过SSH进行根认证来运行rsync。传输和系统身份验证可以完全通过用户帐户完成,只要您可以在两端使用sudo运行rsync来读写文件。
作为目标服务器上的用户,您可以像这样从源服务器获取数据:
sudo rsync -aPe ssh --rsync-path='sudo rsync' boron:/home/fred /home/
您在两台服务器上都运行的用户将需要对rsync二进制文件进行无密码* sudo访问,但是您无需在任何地方以root用户身份启用ssh登录。如果您使用的用户与另一端不匹配,则可以添加user @ boron:来指定其他远程用户。
祝好运。
*或者您需要在超时窗口内手动输入密码。
如果您的数据不是高度敏感,则可以使用tar
和socat
。以我的经验,这通常比rsync
通过ssh 更快。
您需要socat
或netcat
双方。
运行之后,在目标主机上,转到要放置数据的目录:
socat TCP-LISTEN:4444 - | tar xzf -
如果目标主机正在侦听,请在源上启动它,例如:
tar czf - /home/fred /home/ | socat - TCP:ip-of-remote-server:4444
对于此设置,您将需要在两台服务器之间建立可靠的连接。
好的,我整理了所有线索以获取对我有用的东西。
让我们将服务器称为“ src”和“ dst”。
在目标服务器上为root设置密钥对,并将公共密钥复制到源服务器:
dest $ sudo -i
dest # ssh-keygen
dest # exit
dest $ scp /root/id_rsa.pub src:
将公用密钥添加到源服务器上根用户的授权密钥中
src $ sudo -i
src # cp /home/tim/id_rsa.pub .ssh/authorized_keys
回到目标服务器上,使用rsync拉取数据:
dest $ sudo -i
dest # rsync -aP src:/home/fred /home/