我有一台较旧的 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
如果您的数据不是高度敏感的,则可以使用tar
和socat
。根据我的经验,这通常比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/