在rsync调用期间是否可以传递chown命令?

12

标题已经说明了问题。

我看到可以保留所有者:组,但是在同步完成后更改远程文件的所有者:组是否可能?

或者你可以通过某种方式发送额外的命令吗?

rsync -vzrP --delete ~/Sites/website-name/ root@server.com:/home/website-name/public_html/ | chown website-name:websites-group *

抱歉,我的rsync/bash知识非常有限。

2个回答

10
是的,rsync提供了--usermap--groupmap选项,允许您自定义在远程端如何映射它们。
对于您特定的用例,如果要将所有文件映射到相同的用户/组组合中,可以使用--chown选项,这是上述选项的快捷方式。

非常感谢您的回复,但是在搜索(并阅读手册页面)后,我没有找到关于“--usermap --groupmap --chown”(只找到了“--chmod”)的任何信息,抱歉。您能指点我正确的方向或者展示一下语法的例子吗?谢谢。 - CMSCSS
你使用的是哪个版本的rsync?这些选项是在rsync 3.1.0中添加的,并且在man页面中有描述。 - C. K. Young
谢谢,我已经在我的Mac上更新了rsync,但服务器显示3.0.9是最新版本。我使用了“apt-get” - 有没有一种方法可以强制服务器看到更新的版本? - CMSCSS
1
似乎客户端和服务器都必须运行3.1.0+才能使用--chown - Jacket
8
似乎--chown选项只有在你同时设置--owner --group才能生效。这有点反直觉,因为后面的选项是关于从源保留所有者和组的。此外,--chown选项的man手册没有提到这一点,也没有发出警告。而--usermap的部分则提到了这一点。 - user1115652
显示剩余3条评论

1
除了Chris的答案之外,您还可以编辑/etc/rsyncd.conf文件,并在相关的rsync文件夹中包含您想要文件获取的uidgid
例如:
[hadoop_out]
        comment =  hadoop_out
        path = /mass1/mt_data/hadoop_out
        read only = no
        list = yes
        uid = 26
        gid = 26
        auth users = postgres
        secrets file = /etc/rsyncd.secrets
        hosts allow = 10.11.20.61

那么,文件将与用户postgresuidgid26同步并保存,因此您无需在运行命令时提供此信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接