通过SSH的Rsync与双方的根访问

我有一个较旧的Ubuntu的服务器,一个新的debian服务器,我正在从旧的数据迁移到新的。 我想使用rsync传输数据,使最终迁移比等效的tar / scp / untar过程更容易和更快。

作为一个例子,我想同步一个主文件夹到新的服务器。 这需要在两端进行根访问,因为源端的所有文件都不是世界可读的,并且目的地必须以正确的权限写入/ home。 我无法弄清楚如何给双方的rsync根访问。

我已经看到了一些相关的问题,但是没有一个与我正在做的事情完全一致。

我有sudo设置和在两个服务器上工作。

其实你不需要通过SSH来进行根authentication,就像Antoine所说的那样运行rsync 。 传输和系统身份validation可以完全通过用户帐户完成,只要您可以在两端运行带有sudo的rsync来读取和写入文件。

作为目标服务器上的用户,您可以像这样从源服务器上获取数据:

sudo rsync -aPe ssh --rsync-path='sudo rsync' boron:/home/fred /home/ 

在两台服务器上运行的用户都需要使用rsync二进制程序的无密码* sudo访问权限,但不需要在任何地方以root身份启用ssh login。 如果您使用的用户在另一端不匹配,则可以添加user @ boron:指定不同的远程用户。

祝你好运。

*或者您将需要在超时窗口内手动input密码。

如果你的数据不太敏感,你可以使用tar和socat。 根据我的经验,rsync通常比ssh更快。

你需要双方的socat或netcat。

在目标主机上,转到您想要放置数据的目录,然后运行:socat TCP-LISTEN:4444 – | 焦油xzf –

如果目标主机正在侦听,请使用以下命令启动它:tar czf – / home / fred / home / | socat – TCP:ip-of-remote-server:4444

对于这种设置,您需要两台服务器之间的可靠连接。

好吧,我把所有的线索都拼凑起来,find适合我的东西。

让我们调用服务器“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/