Cron Backup
Automated backup scheduling with version detection and intelligent cleanup.
Quick Start
One-Time Backup
CODEBLOCK0
Schedule Daily Backup
CODEBLOCK1
Version-Aware Backup
CODEBLOCK2
Cleanup Old Backups
CODEBLOCK3
Core Capabilities
1. Directory Backup
- - Creates timestamped tar.gz archives
- Preserves file permissions and structure
- Excludes common temp files (node_modules, .git, etc.)
2. Version-Triggered Backup
- - Monitors version file or command output
- Backs up only when version changes
- Useful for software updates
3. Scheduled Execution
- - Integrates with system cron
- Supports custom schedules
- Logs execution results
4. Automatic Cleanup
- - Deletes backups older than N days
- Keeps minimum number of backups
- Prevents disk space exhaustion
Scripts
All scripts are in scripts/ directory:
- -
backup.sh - Single backup execution - INLINECODE2 - Version-triggered backup
- INLINECODE3 - Cron job setup
- INLINECODE4 - Old backup cleanup
- INLINECODE5 - List available backups
Backup Naming Convention
Backups follow the pattern: INLINECODE6
Examples:
Workflow
Setting Up Automated Backups
- 1. Decide backup strategy
- What to backup (source directory)
- Where to store (backup directory)
- How often (schedule)
- Retention policy (cleanup days)
- 2. Run initial backup
CODEBLOCK4
- 3. Set up schedule
CODEBLOCK5
- 4. Configure cleanup
CODEBLOCK6
Version-Aware Backup Workflow
For software that changes version (like OpenClaw):
- 1. Identify version source
- Command:
openclaw --version
- File: INLINECODE10
- 2. Set up versioned backup
CODEBLOCK7
- 3. Schedule version check
CODEBLOCK8
Common Patterns
Pattern 1: Daily User Data Backup
CODEBLOCK9
Pattern 2: Version-Aware Application Backup
CODEBLOCK10
Pattern 3: Multi-Directory Backup
CODEBLOCK11
Cron Schedule Format
Standard cron format: INLINECODE11
Common schedules:
- - Daily at 2 AM: INLINECODE12
- Every 6 hours: INLINECODE13
- Weekly on Sunday: INLINECODE14
- Every 30 minutes: INLINECODE15
Cleanup Policies
- - Time-based: Keep backups for N days
- Count-based: Keep last N backups
- Combined: Default keeps 7 days minimum, but at least 3 backups
Troubleshooting
- - Permission denied: Ensure scripts are executable (
chmod +x scripts/*.sh) - Cron not running: Check cron service status (
systemctl status cron) - Disk full: Run cleanup manually or reduce retention period
- Backup fails: Check source directory exists and is readable
Cron备份
带版本检测和智能清理的自动化备份调度。
快速开始
单次备份
bash
备份目录并添加时间戳
./scripts/backup.sh /path/to/source /path/to/backup/dir
使用自定义名称备份
./scripts/backup.sh /path/to/source /path/to/backup/dir my-backup
设置每日备份
bash
设置每天凌晨2点备份
./scripts/setup-cron.sh daily /path/to/source /path/to/backup/dir 0 2
*
版本感知备份
bash
仅在版本变更时备份
./scripts/backup-versioned.sh /path/to/source /path/to/version/file /path/to/backup/dir
清理旧备份
bash
仅保留最近7天的备份
./scripts/cleanup.sh /path/to/backup/dir 7
核心功能
1. 目录备份
- - 创建带时间戳的tar.gz归档文件
- 保留文件权限和目录结构
- 排除常见临时文件(node_modules、.git等)
2. 版本触发备份
- - 监控版本文件或命令输出
- 仅在版本变更时执行备份
- 适用于软件更新场景
3. 定时执行
- - 集成系统cron任务
- 支持自定义调度计划
- 记录执行结果日志
4. 自动清理
- - 删除超过N天的备份
- 保留最少备份数量
- 防止磁盘空间耗尽
脚本文件
所有脚本位于scripts/目录:
- - backup.sh - 单次备份执行
- backup-versioned.sh - 版本触发备份
- setup-cron.sh - 设置cron任务
- cleanup.sh - 清理旧备份
- list-backups.sh - 列出可用备份
备份命名规则
备份文件遵循格式:{名称}YYYYMMDDHHMMSS.tar.gz
示例:
- - openclabak20260204101500.tar.gz
- myapp20260204000000.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
常见模式
模式1:每日用户数据备份
bash
每日备份工作区,保留30天
./scripts/setup-cron.sh daily /home/user/workspace /backups/workspace 0 2
*
./scripts/setup-cron.sh cleanup /backups/workspace 0 3
* 30
模式2:版本感知应用备份
bash
应用更新时备份
./scripts/setup-cron.sh versioned /opt/myapp /backups/myapp 0
/6
./scripts/setup-cron.sh cleanup /backups/myapp 0 4
0 10
模式3:多目录备份
bash
备份多个目录
./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)
- 磁盘已满:手动运行清理或减少保留期限
- 备份失败:检查源目录是否存在且可读