最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
如何使用 tar 命令搭配 Crontab 实现文件增量自动备份
时间:2026-07-03 10:15:45 编辑:袖梨 来源:一聚教程网
tar增量备份核心是用--newer选项配合时间戳文件,通过crontab定时执行脚本,只打包自上次备份以来修改过的文件,并自动更新时间戳作为下一轮基准。
用 tar 做增量备份,核心是利用 --newer(或 --newer-mtime)选项配合时间戳文件,再通过 crontab 定时触发。关键不是每次全量打包,而是只打包自上次备份以来有变动的文件。
准备一个时间戳标记文件
增量依赖“上次备份的时间点”,需手动或自动维护一个参考时间戳文件(如 /backup/last_backup.time)。首次运行前创建它:
- 执行
touch /backup/last_backup.time初始化 - 后续每次成功备份后,用
touch /backup/last_backup.time更新它,作为下一轮增量的基准
编写增量备份脚本
写个 shell 脚本(比如 /backup/incr_backup.sh),内容示例如下:
#!/bin/bashSRC_DIR="/home/user/docs"BACKUP_DIR="/backup"STAMP_FILE="$BACKUP_DIR/last_backup.time"DATE=$(date +%Y%m%d_%H%M%S)BACKUP_FILE="$BACKUP_DIR/incr_$DATE.tar.gz"<h1>打包比时间戳新的文件(含子目录)</h1><p>tar -czf "$BACKUP_FILE" --newer="$STAMP_FILE" -C "$SRC_DIR" .</p><h1>成功则更新时间戳</h1><p>if [ $? -eq 0 ]; thentouch "$STAMP_FILE"fi
注意:--newer 比较的是文件的修改时间(mtime),若需按修改时间而非状态变更时间,可用 --newer-mtime 更精确。
用 crontab 设置定时任务
运行 crontab -e 添加一行,例如每天凌晨 2 点执行:
0 2 * * * /bin/bash /backup/incr_backup.sh >/dev/null 2>&1
-
/bin/bash显式调用 shell,避免环境变量缺失导致tar或touch找不到 -
>/dev/null 2>&1屏蔽标准输出和错误,如需日志可改为>/backup/backup.log 2>&1 - 确保脚本有执行权限:
chmod +x /backup/incr_backup.sh
补充建议:避免重复与清理
增量备份会不断生成新包,建议加简单清理逻辑:
- 在脚本末尾加
find "$BACKUP_DIR" -name "incr_*.tar.gz" -mtime +7 -delete,自动删除 7 天前的备份 - 若担心时间戳被意外修改,可用
stat -c "%y" "$STAMP_FILE"查看实际时间,或改用date -d "1 hour ago" +%Y%m%d%H%M%S动态计算(适合简单场景) - 重要数据建议搭配校验(如
tar -tzf $BACKUP_FILE >/dev/null验证包完整性)再更新时间戳
不复杂但容易忽略细节:时间戳文件必须可写、路径一致、脚本里用绝对路径调用命令。跑通一次后,就能静默持续积累增量包了。
相关文章
- 《碧蓝幻想Relink无尽黄昏》夏洛特MLV30配装建议 DLC豆丁配装分享 07-10
- 羊蹄山之魂踩菇人的斗笠如何获取 07-10
- 龙岛异兽起源等级进化表全解析龙岛异兽等级划分与进化路径详解 07-10
- 我家大师兄无尽重生好不好玩《我家大师兄无尽重生》核心玩法与体验详解 07-10
- 文字密室逃脱第七关通关攻略详细步骤与谜题解析 07-10
- 刺客信条4黑旗记忆重置 快速刷钱教程 07-10