Cron Backup

💾 智能定时备份,版本变更即归档

devops榜 #29

自动化定时备份工具集,支持版本变更触发备份、智能清理旧文件,适合保护配置文件、代码仓库及用户数据,节省磁盘空间。

收藏
15.7k
安装
3.5k
版本
0.3.1
CLS 安全性认证2026-07-01
点击查看完整报告 >

使用说明

核心功能

Cron Backup 是一套基于 Shell 脚本的自动化备份解决方案,专为 Linux/Unix 系统环境设计。核心能力包括:

1. 定时备份调度:通过封装 crontab 实现无人值守的周期性备份,支持标准 cron 表达式(如 0 2 * * * 表示每日凌晨2点执行)

2. 版本感知备份:独特之处在于可监控版本文件或命令输出,仅在软件更新时触发备份,避免冗余归档

3. 智能空间管理:自动清理超过保留期的旧备份,支持"时间+数量"双重策略(默认保留7天且至少3个备份)

4. 标准化归档:采用 {name}_YYYYMMDD_HHMMSS.tar.gz 命名规范,自动排除 node_modules.git 等临时目录

显著优点

  • 零依赖部署:纯 Bash 脚本实现,无需额外运行时或数据库
  • 权限友好:保留原始文件权限和目录结构
  • 灵活策略:支持每日/每周/自定义周期,以及多目录批量备份
  • 开箱即用:提供 setup-cron.sh 一键配置,降低 crontab 手工编辑门槛

潜在局限

  • 平台限制:依赖 Unix cron 体系,Windows 需 WSL/Cygwin 环境
  • 无加密传输:本地 tar.gz 归档,网络传输需配合 rsync/ssh
  • 单点故障:无分布式备份或云存储原生集成
  • 恢复工具缺失:仅提供备份生成,无专用恢复/浏览界面

适用场景

  • 开发者保护本地配置目录(~/.config~/.ssh
  • 运维人员监控应用版本变更并自动归档
  • 个人工作站的数据冗余保护

常规风险

  • 权限配置失误:cron 执行用户与文件所有者不一致导致备份失败
  • 磁盘空间耗尽:保留策略设置不当或清理任务未正常运行
  • cron 服务异常:系统级 cron 守护进程未启动或被安全策略限制
  • 版本监控误报:若版本文件格式变更,可能导致备份逻辑异常

安全解读

核心用法

cron-backup 是一套基于 Bash 的定时备份解决方案,提供从单次备份到完整自动化策略的全套工具链。核心工作流分为三步:执行 backup.sh 创建带时间戳的 tar.gz 归档 → 使用 setup-cron.sh 配置定时任务 → 部署 cleanup.sh 自动清理过期备份。特别支持「版本感知备份」模式,通过 backup-versioned.sh 监控版本文件或命令输出,仅在软件更新时触发备份,避免重复冗余。

显著优点

功能完整且轻量:5 个脚本约 300 行代码,零第三方依赖,纯系统标准工具(tar、cron、bash)实现,部署成本极低。策略灵活:支持时间触发(cron 调度)、版本触发(变更检测)、混合保留策略(天数+数量双保险)。命名规范清晰{name}_YYYYMMDD_HHMMSS.tar.gz 格式便于版本追溯与脚本化管理。运维友好:内置常见临时文件排除(node_modules、.git 等),日志记录完备,故障排查指引明确。

潜在缺点与局限性

命令注入风险backup-versioned.sh 第 33 行使用 eval 执行用户输入的版本命令字符串,若输入未经严格过滤(如包含 ; rm -rf /),可导致任意命令执行。虽需本地权限利用,但仍属中危漏洞。权限管理粗放:脚本未对路径输入做白名单验证,存在目录遍历风险。跨平台局限:依赖 Linux cron 体系,Windows/macOS 需额外适配。恢复能力缺失:仅提供备份创建与清理,无内置恢复/解压辅助脚本,用户需手动处理 tar.gz。

适合人群

  • 开发者/运维工程师:保护配置文件、代码仓库、应用数据
  • 个人服务器用户:实现低成本自动化数据保护
  • DevOps 实践者:构建 CI/CD pipeline 中的数据持久化环节
  • 不适合:需要加密备份、异地容灾、图形化管理的场景

常规风险

1. eval 注入:恶意构造的 VERSION_SOURCE 参数可导致任意代码执行
2. 磁盘耗尽:配置不当或清理任务失败时,备份累积可能占满存储

3. 权限失控:以 root 运行 cron 任务时,脚本缺陷可能影响系统目录

4. 恢复复杂度:无自动化恢复流程,紧急情况下手动解压易出错

Cron Backup 内容

scripts文件夹
手动下载zip · 6.1 kB
backup-versioned.shtext/x-shellscript
请选择文件