-a选项用于rsync同步时保留acl权限,需与-a配合使用,并确保源目标文件系统支持acl、用户具备相应权限,且远程主机已安装acl工具包。

-A 选项用于保留文件的 ACL(Access Control List)属性,在 Linux 运维中,当源文件或目录设置了精细的访问控制权限(比如通过 setfacl 配置的用户/组特定读写权限),仅用 -a 是不够的——它默认不包含 ACL。必须显式加上 -A 才能同步这些扩展权限。
同步前确认 ACL 是否已启用并可读
目标主机的文件系统需支持 ACL(如 ext4、xfs),且挂载时未禁用 acl 选项:
- 检查挂载参数:
mount | grep " /path " | grep acl,应看到acl字样 - 验证源文件是否有 ACL:
getfacl /path/to/file,若输出含user:alice:rwx等非基础权限行,说明 ACL 生效 - 远程主机也需安装
acl工具包(如 CentOS/AlmaLinux:yum install -y acl)
rsync 命令中正确使用 -A
-A 必须与 -a(归档模式)配合使用,且建议同时加 -H(保留硬链接)、-X(保留扩展属性,部分 ACL 实现依赖它):
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 推送同步(本地 → 远程):
rsync -avAHX --delete /data/ user@host:/backup/data/ - 拉取同步(远程 → 本地):
rsync -avAHX user@host:/data/ /local/data/ - 注意:若远程 SSH 端口非默认 22,用
-e "ssh -p 2222"指定
常见失败原因与应对
即使加了 -A,ACL 仍可能丢失,典型情况包括:
- 远程目标目录父路径无
default ACL:若希望新创建文件自动继承 ACL,需提前在目标目录设置:setfacl -d -m u:alice:rwx /backup/data - 权限不足:运行 rsync 的用户需对源有
read_acl权限,对目标有write_acl权限;普通用户同步时建议用 root 或具备sudo setfacl权限的账号 - SELinux 干扰:若启用了 enforcing 模式,可能拦截 ACL 设置,临时测试可用
setenforce 0排查,生产环境应调整策略而非关闭
验证同步结果是否完整
同步完成后,务必比对两端 ACL 是否一致:
- 本地执行:
getfacl /data/file1 | grep -E "^(user|group|mask|other):" > local.acl - 远程执行:
ssh user@host "getfacl /backup/data/file1 | grep -E '^(user|group|mask|other):'" > remote.acl - 对比:
diff local.acl remote.acl,无输出即表示 ACL 同步成功










