通过 ssh 进行 rsync 并且双方都具有 root 访问权限

通过 ssh 进行 rsync 并且双方都具有 root 访问权限

我有一台较旧的 ubuntu 服务器和一台较新的 debian 服务器,我正在将数据从旧服务器迁移到新服务器。我想使用 rsync 传输数据,使最终迁移比等效的 tar/scp/untar 过程更轻松、更快捷。

例如,我想将主文件夹逐个同步到新服务器。这需要两端都具有 root 访问权限,因为源端并非所有文件都是全局可读的,并且目标必须以正确的权限写入 /home。我不知道如何授予两端的 rsync root 访问权限。

我见过一些相关的问题,但没有一个与我想要做的事情完全匹配。

我已经在两台服务器上设置了 sudo 并且使其运行。

答案1

实际上你不需要通过 SSH 允许 root 身份验证来运行 rsync正如 Antoine 所建议的。只要您可以在两端使用 sudo 运行 rsync 来读取和写入文件,传输和系统身份验证就可以完全通过用户帐户进行。

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

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

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

祝你好运。

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

答案2

如果您的数据不是高度敏感的,则可以使用tarsocat。根据我的经验,这通常比rsync通过 ssh 更快。

您需要socat两侧netcat

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

如果目标主机正在监听,则在源上启动它,如下所示:
tar czf - /home/fred /home/ | socat - TCP:ip-of-remote-server:4444

对于此设置,您需要在两台服务器之间建立可靠的连接。

答案3

好的,我已经将所有线索拼凑在一起,找到了对我有用的东西。

我们将服务器称为“src”和“dst”。

在目标服务器上为 root 设置密钥对,并将公钥复制到源服务器:

dest $ sudo -i
dest # ssh-keygen
dest # exit
dest $ scp /root/id_rsa.pub src:

将公钥添加到源服务器上 root 的授权密钥中

src $ sudo -i
src # cp /home/tim/id_rsa.pub .ssh/authorized_keys

返回目标服务器,使用 rsync 提取数据:

dest $ sudo -i
dest # rsync -aP src:/home/fred /home/

相关内容