Linux tar 增量备份选项
- 2025-07-05 09:50:00
- 丁国栋
- 原创 9
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
注意事项
- 确保妥善保存
.snar
文件,它是增量备份的关键 - 定期执行完整备份,避免依赖过长的增量备份链
- 考虑备份文件的命名和存储组织,便于管理
- 对于重要数据,建议测试恢复过程
更复杂的备份需求可以考虑使用 rsync 或专门的备份工具如 duplicity、bacula 等。
发表评论