名称: cron-backup
描述: 设置定时自动备份,支持版本追踪与清理。适用于以下场景:(1) 为目录或文件安排定期备份;(2) 监控版本变化并在更新时备份;(3) 自动清理旧备份以节省空间;(4) 为配置文件、代码仓库或用户数据制定备份策略。
具备版本检测与智能清理功能的自动化备份调度工具。
# 使用时间戳备份目录
./scripts/backup.sh /path/to/source /path/to/backup/dir
# 使用自定义名称备份
./scripts/backup.sh /path/to/source /path/to/backup/dir my-backup
# 设置每日凌晨2点备份
./scripts/setup-cron.sh daily /path/to/source /path/to/backup/dir "0 2 * * *"
# 仅在版本变化时备份
./scripts/backup-versioned.sh /path/to/source /path/to/version/file /path/to/backup/dir
# 仅保留最近7天的备份
./scripts/cleanup.sh /path/to/backup/dir 7
所有脚本位于 scripts/ 目录:
backup.sh - 执行单次备份backup-versioned.sh - 版本触发式备份setup-cron.sh - 设置 cron 任务cleanup.sh - 清理旧备份list-backups.sh - 列出可用备份备份文件遵循格式:{名称}_YYYYMMDD_HHMMSS.tar.gz
示例:
- openclabak_20260204_101500.tar.gz
- myapp_20260204_000000.tar.gz
确定备份策略
- 备份内容(源目录)
- 存储位置(备份目录)
- 备份频率(调度计划)
- 保留策略(清理天数)
执行初始备份
bash
./scripts/backup.sh /source /backup
设置定时计划
bash
./scripts/setup-cron.sh daily /source /backup "0 2 * * *"
配置清理任务
bash
./scripts/setup-cron.sh cleanup /backup "" "0 3 * * *" 7
适用于版本会变化的软件(如 OpenClaw):
确定版本来源
- 命令:openclaw --version
- 文件:/path/to/version.txt
设置版本化备份
bash
./scripts/backup-versioned.sh /app /app/version.txt /backups/app
调度版本检查
bash
./scripts/setup-cron.sh versioned /app /backups/app "0 */6 * * *"
# 每日备份工作区,保留30天
./scripts/setup-cron.sh daily /home/user/workspace /backups/workspace "0 2 * * *"
./scripts/setup-cron.sh cleanup /backups/workspace "" "0 3 * * *" 30
# 应用更新时备份
./scripts/setup-cron.sh versioned /opt/myapp /backups/myapp "0 */6 * * *"
./scripts/setup-cron.sh cleanup /backups/myapp "" "0 4 * * 0" 10
# 备份多个目录
./scripts/backup.sh /home/user/.config /backups/config
./scripts/backup.sh /home/user/projects /backups/projects
标准 cron 格式:分钟 小时 日 月 星期
常用调度示例:
- 每日凌晨2点:0 2 * * *
- 每6小时:0 */6 * * *
- 每周日:0 0 * * 0
- 每30分钟:*/30 * * * *
chmod +x scripts/*.sh)systemctl status cron)