OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  cron-backup:带版本追踪与清理功能的自动化定时备份方案

cron-backup:带版本追踪与清理功能的自动化定时备份方案

 
  gemini ·  2026-02-12 10:09:33 · 3 次点击  · 0 条评论  

名称: 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

核心功能

1. 目录备份

  • 创建带时间戳的 tar.gz 归档文件
  • 保留文件权限与目录结构
  • 排除常见临时文件(如 node_modules、.git 等)

2. 版本触发备份

  • 监控版本文件或命令输出
  • 仅在版本变更时执行备份
  • 适用于软件更新场景

3. 定时调度

  • 与系统 cron 集成
  • 支持自定义调度时间
  • 记录执行结果日志

4. 自动清理

  • 删除超过指定天数的旧备份
  • 确保保留最少备份数量
  • 防止磁盘空间耗尽

脚本说明

所有脚本位于 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

工作流程

设置自动化备份

  1. 确定备份策略
    - 备份内容(源目录)
    - 存储位置(备份目录)
    - 备份频率(调度计划)
    - 保留策略(清理天数)

  2. 执行初始备份
    bash ./scripts/backup.sh /source /backup

  3. 设置定时计划
    bash ./scripts/setup-cron.sh daily /source /backup "0 2 * * *"

  4. 配置清理任务
    bash ./scripts/setup-cron.sh cleanup /backup "" "0 3 * * *" 7

版本感知备份流程

适用于版本会变化的软件(如 OpenClaw):

  1. 确定版本来源
    - 命令:openclaw --version
    - 文件:/path/to/version.txt

  2. 设置版本化备份
    bash ./scripts/backup-versioned.sh /app /app/version.txt /backups/app

  3. 调度版本检查
    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 时间格式

标准 cron 格式:分钟 小时 日 月 星期

常用调度示例:
- 每日凌晨2点:0 2 * * *
- 每6小时:0 */6 * * *
- 每周日:0 0 * * 0
- 每30分钟:*/30 * * * *

清理策略

  • 基于时间:保留最近 N 天的备份
  • 基于数量:保留最后 N 个备份
  • 组合策略:默认保留至少7天,且不少于3个备份

故障排除

  • 权限被拒绝:确保脚本可执行(chmod +x scripts/*.sh
  • Cron 未运行:检查 cron 服务状态(systemctl status cron
  • 磁盘已满:手动运行清理或减少保留天数
  • 备份失败:检查源目录是否存在且可读
3 次点击  ∙  0 人收藏  
登录后收藏  
目前尚无回复
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor