核心是使用-a选项,它等价于-rlptgoD,可递归同步并完整保留权限、属主、属组、时间戳、符号链接及设备文件等属性。

在 Linux 中用 rsync 保持源文件的属性与权限,核心是使用 -a(archive)选项,它已默认包含递归、保留权限、所有者、组、时间戳、符号链接等关键属性。若需更精细控制或补充功能,可叠加其他参数。
用 -a 参数完整保留基本属性
-a 是最常用且推荐的起点,等价于 -rlptgoD,涵盖:
- -r:递归复制目录
- -l:保留符号链接(不展开)
- -p:保留文件权限(mode,即 rwx 权限)
- -t:保留修改时间(mtime)
- -g 和 -o:保留属组(group)和属主(owner)
- -D:保留设备文件和 FIFO
示例:rsync -a /src/ /dst/
注意末尾斜杠:/src/ 表示同步内容,/src 不带斜杠则同步整个目录名。
补充属主/属组需 root 权限
-a 中的 -o 和 -g 只有在运行 rsync 的用户具有 足够权限 时才生效:
- 本地同步:通常需以 root 运行(
sudo rsync -a ...),否则普通用户无法设置任意 uid/gid - 远程同步(如 rsync over SSH):目标端执行 chown/chgrp 同样需要目标用户具备相应权限;建议用
sudo配合 rsync 的--rsync-path(例如--rsync-path="sudo rsync"),并配置目标主机的 sudo 免密策略
额外保留扩展属性与 ACL
若源文件启用了 SELinux 上下文、ACL 或 extended attributes(如 xattr),-a 默认不处理,需显式添加:
-
--xattrs(或
-X):复制扩展属性(含 SELinux context) -
--acls(或
-A):复制访问控制列表(ACL)
组合示例:rsync -aAX /src/ /dst/
⚠️ 注意:目标文件系统需支持 xattr/ACL(如 ext4、xfs),且内核挂载选项要启用(如 user_xattr, acl)。
验证是否成功保留
同步后可用以下命令对比关键属性:
- 权限与时间戳:
ls -l /src/file /dst/file - 属主属组:
ls -n /src/file /dst/file(显示 uid/gid 数值,避免用户名映射干扰) - SELinux 上下文:
ls -Z /src/file /dst/file(需启用-X) - ACL:
getfacl /src/file /dst/file(需启用-A)


















