Linux tar 增量备份选项

2025-07-05 09:50:00
丁国栋
原创 10
摘要:Linux tar 增量备份选项。

Linux tar 命令实现增量备份

tar 命令可以通过几种方式实现增量备份,以下是常用的方法:

1. 使用 --listed-incremental 选项

这是 tar 自带的增量备份功能:

# 首次完整备份
tar --create --gzip --file=backup-full.tar.gz --listed-incremental=backup.snar /path/to/backup
# 后续增量备份
tar --create --gzip --file=backup-incr1.tar.gz --listed-incremental=backup.snar /path/to/backup

说明:

  • backup.snar 是快照文件,记录备份状态
  • 首次备份是完整备份,后续是增量备份

2. 使用 --newer 选项

基于时间戳的增量备份:

# 备份最近24小时内修改的文件
tar --create --gzip --file=backup-$(date +%Y%m%d).tar.gz --newer='1 day ago' /path/to/backup

3. 结合 find 命令实现增量备份

# 查找并备份最近修改的文件
find /path/to/backup -type f -mtime -1 -print0 | tar --null --files-from - -czf backup-$(date +%Y%m%d).tar.gz

4. 恢复增量备份

# 先恢复完整备份
tar -xzf backup-full.tar.gz
# 然后按顺序应用增量备份
tar -xzf backup-incr1.tar.gz
tar -xzf backup-incr2.tar.gz

5. 自动化脚本示例

#!/bin/bash
# 配置
BACKUP_DIR="/path/to/backup"
DEST_DIR="/backup/location"
TIMESTAMP=$(date +%Y%m%d)
SNAPSHOT_FILE="$DEST_DIR/backup.snar"
# 检查是否是完整备份日(例如每周日)
if [ $(date +%u) -eq 7 ]; then
  BACKUP_FILE="$DEST_DIR/full-backup-$TIMESTAMP.tar.gz"
  tar --create --gzip --file=$BACKUP_FILE --listed-incremental=$SNAPSHOT_FILE $BACKUP_DIR
else
  BACKUP_FILE="$DEST_DIR/incr-backup-$TIMESTAMP.tar.gz"
  tar --create --gzip --file=$BACKUP_FILE --listed-incremental=$SNAPSHOT_FILE $BACKUP_DIR
fi

注意事项

  1. 确保妥善保存 .snar 文件,它是增量备份的关键
  2. 定期执行完整备份,避免依赖过长的增量备份链
  3. 考虑备份文件的命名和存储组织,便于管理
  4. 对于重要数据,建议测试恢复过程

更复杂的备份需求可以考虑使用 rsync 或专门的备份工具如 duplicity、bacula 等。

发表评论
博客分类