首页/数据/备份与容灾速查/rsync 权限与扩展属性保留

rsync 权限与扩展属性保留

完整备份需要保留权限、属主、ACL 与扩展属性:-a 覆盖常规元数据,ACL 与 xattr 需要额外开关,跨主机恢复时用数字属主避免 UID 映射错位。

备份与容灾速查数据更新于 2026-10-13

rsync 的属性保留

-a 归档模式只覆盖常规元数据(递归、权限、属主、属组、时间、符号链接、设备文件),ACL、扩展属性、硬链接与稀疏文件都要额外开关。备份一个跑着 Web 服务的目录,如果只写 -a,恢复后 SELinux 标签、ACL 与 xattr 全部丢失,服务可能直接起不来。

基本信息

-a 覆盖内容-rlptgoD:递归、链接、权限、时间、组、属主、设备文件
易漏项ACL(-A)、扩展属性(-X)、硬链接(-H)、稀疏文件(-S)
跨机选项--numeric-ids:按数字 ID 保留属主,避免用户名映射错位
权限要求还原属主、设备文件与 xattr 通常需要 root

典型使用场景

  • Web 与业务目录备份:保留 ACL 与 SELinux 标签,恢复后服务可直接启动
  • 跨主机迁移:用 --numeric-ids 保证属主与源端一致
  • 多目录硬链接结构备份:加 -H 才能保持硬链接关系而不是复制成多份
  • 虚拟机镜像与数据库文件搬运:加 -S 处理稀疏文件,避免体积虚高
  • 合规取证:保留扩展属性与时间戳,保证证据链完整

完整属性备份与恢复

完整属性备份与恢复
# 备份:保留权限 / 属主 / 硬链接 / ACL / 扩展属性
rsync -aHAX --numeric-ids /data/ backup@10.0.0.5:/backup/data/
# 稀疏文件加 -S,避免占用被放大
rsync -aHAXS --numeric-ids /var/lib/vm/ backup@10.0.0.5:/backup/vm/
# 恢复:目标端需 root 才能还原属主与设备文件
rsync -aHAX --numeric-ids backup@10.0.0.5:/backup/data/ /data/
# SELinux 上下文本质是 security.selinux 扩展属性,靠 -X 保留
# 恢复后核对上下文是否与源端一致
ls -Z /data/app.conf

开关对照与遗漏后果

选项保留内容遗漏后果
-a常规元数据(权限、属主、时间、链接)恢复后权限错乱,脚本缺少可执行位
-APOSIX ACL 与默认 ACL细粒度授权丢失,个别用户被拒或越权
-X扩展属性(含 SELinux 标签)SELinux 环境下服务启动被拒绝,报错指向上下文
-H硬链接关系多处硬链接被复制成独立文件,占用成倍上升
-S稀疏文件结构恢复后文件虚占大量磁盘空间
普通用户无法还原属主与设备节点:跨机恢复通常需要 root 或带 sudo 的执行环境,否则会静默跳过这些属性。
用 root 在两端同步时要慎用 --delete:源端多一次误删或路径写错,会在目标端如实删除数据,建议先在 --dry-run 下核对清单。

易错点

  • 按用户名映射属主:目标主机同名账号对应不同 UID,权限错位,跨机恢复应加 --numeric-ids
  • 只加 -a 而不加 -A:ACL 与默认 ACL 不被保留,细粒度授权在恢复后消失
  • SELinux 环境未保留扩展属性:恢复后安全上下文不对,服务被拒绝启动且报错不易定位
  • root 执行 rsync --delete 未先预演:源端误删或不完整会被同步到备份目标,直接破坏备份副本

数据来源与参考

  • rsync 手册(-a、-A、-X、-H、--numeric-ids)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌