Rsync + Tar 组合适合中小规模 Linux 系统备份,核心在于策略设计:一、Rsync 用 --link-dest 实现硬链接式增量,配合时间戳目录与 --delete;二、Tar 封装快照并校验;三、分层执行每月全量、每周/每日增量及归档;四、恢复需兼顾权限、SELinux、服务状态与校验。

Rsync + Tar 组合不是万能方案,但对中小规模 Linux 系统来说,它足够灵活、可控、不依赖特殊服务,且能兼顾全量与增量备份需求。关键不在工具本身,而在策略设计和执行细节——比如时间戳管理、目录结构规划、硬链接复用、校验机制是否落地。
一、Rsync 做增量同步:靠变更检测,不靠文件内容比对
Rsync 的增量能力来自其传输算法,但“增量备份”常被误解为“只传变化的字节”。实际中更常用的是 --link-dest 配合目录快照,实现空间高效的历史版本保留。
- 每次备份生成带时间戳的独立目录(如
/backup/www_20240520),但不复制全部文件 - 用
--link-dest=/backup/www_20240519参数让新目录中未变文件以硬链接指向前一次,节省磁盘空间 - 务必加
--delete(慎用!建议先加--dry-run测试)清理已删除文件,保持目标与源一致 - 避免在 NFS 或某些网络文件系统上使用硬链接,可能失效;本地 ext4/xfs 可靠
二、Tar 做归档封装:解决 Rsync 不留历史快照的问题
Rsync 同步的是“当前状态”,无法回溯某天某个时刻的完整快照。Tar 把某次 Rsync 结果打包压缩,就形成可验证、可离线、可迁移的备份单元。
- 推荐在 Rsync 完成后立即 tar 打包当日快照目录:
tar -czf www_20240520.tar.gz -C /backup www_20240520 - 加
--atime-preserve保留访问时间,--sparse处理稀疏文件(如虚拟机镜像) - 用
tar -tzf xxx.tar.gz | head -20快速检查包内容,避免空包或路径错误 - 不要 tar 正在被 rsync 写入的目录——加锁或等 rsync 退出后再打包
三、混合策略实战:每周全量 + 每日增量 + 每月归档
真正落地的备份不是“全量 or 增量”,而是分层组合。一个典型周期示例:
- 每月 1 日:执行全量 Rsync(无 --link-dest),生成
full_20240501,再 tar 压缩并标记full - 每周一:基于上个全量目录做 --link-dest 增量,生成
incr_weekly_20240506,tar 后标记weekly - 其他工作日:基于昨日目录做 --link-dest,生成
incr_daily_20240520,仅保留最近 7 天,tar 后标记daily - 所有 tar 包统一存到另一台机器或对象存储,用
md5sum *.tar.gz > checksums.md5记录校验值
四、恢复不是“tar -xf 就完事”:要还原上下文
备份做得好,恢复时却出错,往往因为忽略了路径、权限、SELinux 上下文或服务状态。










