Linux 备份采用“rsync 增量同步 +tar 归档快照”双机制:rsync 日常高效同步(-avh –delete),tar 定期生成带日期的压缩包(如 home_20240518.tar.gz)用于历史回溯,恢复时按需选择直接复制或解压后 rsync 反向同步。

Linux 下用 rsync 和 tar 做 文件备份,核心是“增量同步 + 归档快照”双保险:rsync 负责日常高效同步,tar 负责定期打包存档,两者结合既省空间又保安全。
rsync 日常增量备份:只传变化,不重复拷贝
rsync 是备份主力,特点是跳过未修改的文件,大幅减少传输量和时间。常用组合参数 -avh –delete 含义如下:
- -a:归档模式(保留权限、所有者、时间戳、软硬链接等)
- -v:显示详细过程(方便排查)
- -h:以易读单位(KB/MB)显示大小
- –delete:目标端删除源端已不存在的文件(保持严格一致)
示例命令(每日凌晨同步 /home 到备份盘):
rsync -avh –delete /home/ /backup/home/
注意:源路径末尾加斜杠 / 表示同步目录内容;不加则同步整个目录名。建议配合 cron 定时执行,比如每天 2:00 运行:
0 2 * * * rsync -avh –delete /home/ /backup/home/ >> /var/log/rsync_home.log 2>&1
tar 定期归档快照:留痕可回溯,防误删误改
rsync 虽快,但无法回退到某天的历史状态。这时用 tar 生成带日期的压缩包,作为“时间点快照”:
- 每周六凌晨打包一次,保留最近 4 周的归档
- 文件名含日期(如 home_20240518.tar.gz),便于识别
- 使用 –exclude 跳过缓存、临时文件等非必要项
示例脚本片段(保存为/usr/local/bin/backup_tar.sh):
tar -czf /backup/archive/home_$(date +%Y%m%d).tar.gz \
–exclude=’/home/*/.cache’ \
–exclude=’/home/*/.thumbnails’ \
/home
配合 cron 每周六执行:
0 3 * * 6 /usr/local/bin/backup_tar.sh >> /var/log/tar_backup.log 2>&1
恢复操作:按需选择,不盲目覆盖
恢复分两种场景,处理方式不同:
- 单个文件或目录误删:直接从 rsync 目标目录(如/backup/home/username/docs/)复制回来,最快最准
- 整目录损坏或需回滚到某天状态 :先 解压 对应日期的 tar 包(如 home_20240511.tar.gz),再用 rsync 反向同步回原位置(加–delete 确保干净):
tar -xzf /backup/archive/home_20240511.tar.gz -C /tmp/restore/ &&
rsync -avh –delete /tmp/restore/home/ /home/
操作前建议先 对比确认目标路径、时间戳和文件数量,避免覆盖当前有效数据。
策略优化与避坑提醒
实际部署中几个关键细节常被忽略:
- 备份盘务必独立于系统盘(物理分离或挂载为不同设备),防止主机故障导致备份一同丢失
- 对 /etc、/var/spool/cron、/root/.ssh 等关键配置目录,单独加入 rsync 任务,避免遗漏
- 定期校验备份有效性:每月手动抽查一个 tar 包能否正常解压,跑一次 rsync dry-run(加–dry-run)看差异是否合理
- 日志要保留至少 30 天,出问题时能快速定位哪次同步异常
不复杂但容易忽略。把 rsync 当“实时镜像”,把 tar 当“历史底片”,两者配合,小团队也能建起可靠备份防线。