「rsync」- 与文件所有者、所属组、权限有关的处理

问题描述

在使用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