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当“历史底片”,两者配合,小团队也能建起可靠备份防线。










