Rsync命令问题,所有者和组权限不变


28

我正在尝试通过设置所有者和组rsync,但似乎没有用。

这是命令:

sudo rsync -rlptDvz --owner=cmsseren --group=cmsseren /home/serena/public_html/ -e ssh root@ip:/home/cmsseren/public_html2/

文件可以正确同步,但似乎不会更改所有者和组。

Answers:


14

听起来好像工作正常。使用--owner--group保存(未设置)所有者和组名......这意味着你不希望他们转移后更改。

如果您不使用这些选项,则用户和组将在接收端更改为调用用户。如果要指定其他用户,则需要chown在脚本中添加命令。

-o, --owner
    This option causes rsync to set the owner of the destination file to be 
    the same as  the source file, but only if the receiving rsync is being run 
    as the super-user (see also the --super and --fake-super options). Without 
    this option, the owner of new and/or transferred files are set to the invoking 
    user on the receiving side...

-g, --group
    This option causes rsync to set the group of the destination file to be the same as 
    the source file. If the receiving program is not running as the super-user (or if
    --no-super was specified), only groups that the invoking user on the receiving side
    is a member of will be preserved. Without this option, the group is set to the default
    group of the invoking user on the receiving side...

手动同步


1
那么,如何远程给用户和组穿梭呢?通过ssh吗?你能告诉我如何吗?我对两台服务器都有root访问权限。我不想使用ssh键,但是请告诉我您知道的所有选项,我将不胜感激。感谢您的快速反应
阿诺尔Bazaldua

命令如下所示: ssh root@ip 'chown -R cmsseren:cmsseren /home/serena/public_html2/*'
user3150166 2013年

我尝试过,但是没有用,所有者和用户是相同的。发出命令后,它说:stdin:不是tty
Arnoldo Bazaldua 2014年

现在可以正常工作,防火墙问题。现在,我只需要自动输入ssh和rsync的密码即可
Arnoldo Bazaldua 2014年

我将其张贴在其他问题中,谢谢您的帮助
Arnoldo Bazaldua 2014年

61

rsync的3.1.0版本介绍了Thomas所提到的--usermap--groupmap,还提供了便捷选项--chown,该选项非常适合您的情况。

--chown=USER:GROUP
    This option forces all files to be owned by USER with group GROUP.
    This  is  a  simpler  interface  than  using  --usermap  and  --groupmap directly,
    but  it  is implemented using those options internally, so you cannot mix them.
    If either the USER or GROUP is empty, no mapping for the omitted user/group will
    occur.  If GROUP is empty, the trailing colon may be omitted, but if USER is
    empty, a leading colon must  be supplied.

    If you specify "--chown=foo:bar, this is exactly the same as specifying
    "--usermap=*:foo --groupmap=*:bar", only easier.

另外,-o-g选项也是必需的。排除它们将无法更新其各自的属性,但不会产生任何错误。

rsync -og --chown=cmsseren:cmsseren [src] [dest]

这是在间接提到的手册页,其中指出,--chown选项“是使用实现的--usermap--groupmap内部”,和:

对于--usermap选项有什么影响时,-o--owner)选项必须使用(或暗示),并且接收机将需要运行一个超级用户(也见--fake-super选项)。

对于--groupmap选项有任何效果,-g--groups)选项必须被使用(或暗示),并且接收器将需要具有的权限来设置该组。


5
为什么需要-og?对我来说似乎不合逻辑,但我的系统也需要它。
Yai0Phah

4
@FrankScience同意,这似乎是不合逻辑的。在rsync邮件列表中询问了相同的问题。“我建议的文档--chown会很好地提到--owner--super)和--group需要”
TachyonVortex

5

rsync的最新版本(至少3.1.1)允许您指定“远程所有权”:

--usermap=tom:www-data

将tom所有权更改为www-data(又名PHP / Nginx)。如果您使用Mac作为客户端,请使用brew升级到最新版本。然后在您的服务器上,下载存档源,然后“制作”它!


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.