Linux备份恢复项目教程_Rsynctar全量增量备份实战

14次阅读

rsync与tar可协同实现全量+增量备份:每周tar全量打包并校验,每日rsync硬链接式增量快照,统一目录管理;恢复时直接解压或同步对应快照即可。

Linux备份恢复项目教程_Rsynctar全量增量备份实战

用 rsync + tar 做 linux 备份,不是非得二选一——全量和增量可以配合使用,关键在设计好目录结构、时间标记和同步逻辑。rsync 负责高效同步,tar 负责归档打包,两者结合既能保留历史快照,又避免重复存储大量相同文件。

一、备份策略设计:全量 + 增量快照式存档

不推荐纯增量(如每天只备份变化文件),因为恢复时需按顺序还原多个增量包,易出错且耗时。更稳妥的做法是:

  • 每周一次全量备份:用 tar 打包并压缩,命名含日期(如 backup_full_20240601.tar.gz)
  • 每日增量备份:用 rsync 的 –link-dest 参数硬链接前次全量目录,生成“类快照”结构,实际只存差异
  • 所有备份统一存放在 /backup/ 下,按 full_yyYYMMDDinc_YYYYMMDD 分目录管理

二、全量备份脚本(tar + gzip)

执行前确保目标路径有足够空间,建议加校验和(sha256sum)并记录时间戳:

#!/bin/bash DATE=$(date +%Y%m%d) SRC="/etc /home /root /var/www" DST="/backup/full_${DATE}" TAR_FILE="/backup/backup_full_${DATE}.tar.gz" 

mkdir -p "$DST" tar -czf "$TAR_FILE" -C / $SRC sha256sum "$TAR_FILE" > "$TAR_FILE.sha256" echo "Full backup done: $TAR_FILE"

说明:/etc、/home 等是典型需备份的核心路径,可根据实际调整;-C / 表示从根开始相对打包,解压时结构清晰。

三、增量备份脚本(rsync 硬链接快照)

利用 rsync 的 –link-dest 复用上一个全量目录的文件块,新目录看起来独立,实则节省空间:

#!/bin/bash DATE=$(date +%Y%m%d) FULL_DIR="/backup/full_$(date -d 'last Sunday' +%Y%m%d)"  # 自动找上周日全量 INC_DIR="/backup/inc_${DATE}" 

若找不到全量基线,回退到最新全量

if [ ! -d "$FULL_DIR" ]; then FULLDIR=$(ls -rd /backup/full* 2>/dev/null | head -n1) fi

rsync -av --delete --link-dest="$FULL_DIR" --exclude='/proc' --exclude='/sys' --exclude='/dev' --exclude='/backup' / "$INC_DIR/"

touch "$INC_DIR/.backup_timestamp" echo "Incremental backup done: $INC_DIR"

注意:–link-dest 必须指向已存在的完整目录,且与目标目录在同一分区(否则硬链接失效);排除虚拟文件系统是必须操作。

四、恢复操作:按需选择全量或增量快照

恢复不依赖脚本,直接解压或复制即可:

  • 恢复某天全量:tar -xzf /backup/backup_full_20240601.tar.gz -C /
  • 恢复某日增量快照(即模拟当日系统状态):rsync -a /backup/inc_20240605/ / (注意末尾斜杠)
  • 验证完整性:对比 sha256sum 或用 tar -tzf 检查包内文件列表

提示:生产环境建议先恢复到测试机,确认服务、权限、SELinux 上下文(如需)无误再上线。

text=ZqhQzanResources