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