Rsync – 在另一台机器上维护“root”权限?

我只是试图从一个家庭服务器复制目录到另一个,都运行Ubuntu(9.04和9.10),使用rsync。 我遇到的麻烦是目录(和子目录)中的一些文件是由root拥有的。 两台机器上的主pipe理员帐户都是'ben',所以在旧服务器上运行这个帐户:

rsync -v -u -a -p -t -rsh=ssh --stats --progress source/ ben@newserver:/dest 

提示我为ben @ newserver的密码,复制源代码/但所有的权限是“ben”在新的目的地。 使用sudo运行这个function意味着我可以访问root的文件,但另一方面,ben不能把它们写成root。 发送到root @ newserver会询问root的密码,这是Ubuntu不给你的。

任何人都可以解释如何做到这一点? 谢谢 :)

您可以设置SSH密钥 ,并将您的公钥放在root服务器上的newserver ~root/.ssh/authorized_keys2文件中。 这样你就可以以root身份完成整个过程。

或者你可以通过以下方式设置root的密码:

 sudo passwd root 

但SSH密钥更安全,(恕我直言)更方便。

您可以使用--rsync-path选项在远程计算机上运行sudo rsync ; 我怀疑你必须给ben用户无密码的sudo权限才能运行rsync ,因为rsync-path将密码提示传递回源机器的可能性很小。

为了让rsync维护所有的文件所有权/权限属性,它需要在正在写入的末尾以root用户身份运行。 如果你只是一端,那么这就需要写作结束,所以你需要做的

 rsync -v -u -a -p -t -rsh=ssh --stats --progress user@oldserver:source/ /dest/ 

而在新的服务器上以root身份login。

当将文件发送到没有root访问权限的备份位置(以及之后再次获取文件)时,– --fake-super选项可能非常有用,但是如果没有额外的(rsyncing)到这个选项的任一服务器上的中间位置,然后rsyncing到最后的目的地)。

如上所述,其他选项是让你的用户在写入结束时以root用户的身份在你的sudo config中无密码地访问rsync。