问题描述
在使用rsync进行文件同步时,「保留原文件的所有属性」是常规用法。有时候,我们也需要:
1)在覆盖时,保留远程原文件的所有者 ⇒ 仅覆盖文件内容,但不覆盖文件属性;
2)或者「以特定用户创建远程文件」。
本文将介绍在使用rsync进行文件同步时的处理文件所有者、所属组、权限有关的方法。
保留文件的全部属性
场景描述
即保留文件所有属性,使远程与本地文件保持一致。
这是一种常见需求,比如在进行某个服务的数据迁移,如果没有正确保留权限,那服务启动时可能会产生错误。
解决办法
使用rsync -az命令。
将目标文件设置为特定用户
场景描述
被同步到远程的文件,文件的所有者、所属组将设置为特定用户。
这是另外一种场景,本地文件由root用户所有。在同步到远程后,希望归www用户所有。
解决办法
方法一,使用特定用户上传,rsync /source/directory user@hostname:/destination/directory,远程的文件所有者及组将被设置为特定用户,这是用user及其组。
方法二,使用--chown选项,rsync --owner --group --chown=user:group src dst,选项--chown并不是修改文件所有者及所属组,而是重新映射。所以一定要指定--owner与--group选项来保留所有者及所属组,然后告诉rsync(通过–chown选项)对其重新映射。
参考文献
Rsync with destination owner and permission possible?
Rsync command issues, owner and group permissions doesn´t change