通过ssh进行Rsync,两端均具有root访问权限


14

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

例如,我想一次将主文件夹同步到新服务器。这要求两端都具有root用户访问权限,因为并非源端的所有文件都可以被世界读取,并且必须以正确的权限将目标写入/ home。我不知道如何在两边都赋予rsync根访问权限。

我已经看到了一些相关的问题,但是没有一个完全符合我的尝试。

我已经在两个服务器上设置了sudo并正在工作。

Answers:


14

实际上,您不需要像Antoine所建议的那样允许通过SSH进行根认证来运行rsync。传输和系统身份验证可以完全通过用户帐户完成,只要您可以在两端使用sudo运行rsync来读写文件。

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

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

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

祝好运。

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


5
尽管这是一个古老的问题,但我想在此已接受的答案中添加“ 小心”一词 。据我了解,允许无密码的“ sudo rsync”等效于打开根帐户以进行远程登录。这是因为通过它很容易获得完全的root用户访问权限,例如,因为无需密码即可下载,修改和替换所有系统文件。
Ascurion'1

3

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

您需要socatnetcat双方。

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

如果目标主机正在侦听,请在源上启动它,例如:
tar czf - /home/fred /home/ | socat - TCP:ip-of-remote-server:4444

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


好点子。在可信赖的环境中,不加密将提高速度。小型文件可能无关紧要,但是使用GB的数据就可以了。
pboin 2010年

2

好的,我整理了所有线索以获取对我有用的东西。

让我们将服务器称为“ 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/
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.