数据不丢失:青龙面板任务备份与10分钟恢复实战

数据不丢失:青龙面板任务备份与10分钟恢复实战

【免费下载链接】qinglong 支持 Python3、JavaScript、Shell、Typescript 的定时任务管理平台(Timed task management platform supporting Python3, JavaScript, Shell, Typescript) 【免费下载链接】qinglong 项目地址: https://gitcode.com/GitHub_Trending/qi/qinglong

你是否曾因服务器故障、误操作或版本更新导致青龙面板(Qinglong)的定时任务数据丢失?作为支持Python3、JavaScript、Shell、TypeScript的定时任务管理平台,青龙面板存储的任务配置、执行记录和环境变量往往承载着重要的业务逻辑。本文将通过可视化操作指南+自动化脚本两种方式,带你构建完整的数据安全方案,确保任务数据万无一失。

一、备份原理:青龙数据安全架构解析

青龙面板的核心数据存储在data/目录下,主要包括:

  • 数据库文件:任务配置、定时规则、执行日志(位于data/db/
  • 上传文件:用户上传的脚本与资源(位于data/upload/

备份功能通过back/services/system.ts实现,核心逻辑是将上述目录打包为data.tgz压缩文件。恢复时通过back/api/system.ts提供的接口解压并覆盖原始数据目录,实现完整的数据迁移与恢复。

mermaid

二、两种备份方案:从手动操作到自动化

2.1 手动备份:3步导出关键数据

  1. 登录青龙面板,进入系统设置页面(对应前端代码src/pages/setting/index.tsx
  2. 数据管理模块点击「导出数据」按钮
  3. 浏览器自动下载data.tgz文件,建议重命名为ql_backup_20250101.tgz(按日期区分版本)

2.2 定时备份:配置自动执行脚本

通过青龙面板自带的定时任务功能,实现每周日凌晨3点自动备份:

  1. 新建Shell任务,命令如下:
# 调用系统备份接口生成文件
curl -X PUT -H "Content-Type: application/json" -d '{"type": ["db", "upload"]}' http://localhost:5700/api/system/data/export
# 移动备份文件到指定目录
mv /ql/data/data.tgz /ql/backup/ql_backup_$(date +%Y%m%d).tgz
  1. 设置Cron表达式为0 3 * * 0(每周日凌晨3点执行)
  2. 任务日志将保存在src/pages/log/index.tsx页面可查

⚠️ 注意:确保已创建/ql/backup目录并设置权限,可通过终端执行mkdir -p /ql/backup && chmod 777 /ql/backup

三、恢复测试:10分钟验证数据有效性

3.1 恢复操作步骤

  1. 进入青龙面板系统设置数据管理页面
  2. 点击「导入数据」,上传备份文件ql_backup_20250101.tgz
  3. 系统自动执行解压(对应代码back/services/system.ts#L455-L464
  4. 重启青龙服务使配置生效:ql reload

3.2 有效性验证清单

检查项验证方法对应文件路径
任务数量对比恢复前后「定时任务」页面数量src/pages/crontab/index.tsx
执行记录查看最近任务日志是否完整src/pages/log/index.tsx
环境变量检查「依赖管理」页面配置是否存在src/pages/dependence/index.tsx

3.3 恢复失败处理

若恢复后面板无法启动,可通过以下命令手动恢复:

# 进入青龙目录
cd /data/web/disk1/git_repo/GitHub_Trending/qi/qinglong
# 解压备份文件
tar zxvf /ql/backup/ql_backup_20250101.tgz -C ./data/
# 重启服务
docker-compose restart

四、企业级最佳实践

4.1 备份策略建议

  • 保留周期:至少保留最近3个备份文件,使用find /ql/backup -mtime +30 -delete自动清理30天前备份
  • 异地存储:通过脚本将备份文件同步到外部存储(如NAS或云存储)
  • 加密保护:敏感场景可使用openssl enc -aes-256-cbc -salt -in data.tgz -out data.tgz.enc加密备份

4.2 监控告警配置

src/pages/setting/notification.tsx页面配置备份结果通知,当备份失败时通过以下方式提醒:

  1. 企业微信机器人Webhook
  2. 邮件通知
  3. 消息通知(需额外配置API密钥)

五、常见问题解决

Q:备份文件超过100MB怎么办?
A:通过back/services/system.ts#L438-L453exportData方法支持按需备份,调用时指定type: ["db"]仅备份数据库文件。

Q:恢复后任务执行失败?
A:检查依赖是否完整,可执行ql update更新依赖,或通过src/pages/dependence/index.tsx页面重新安装缺失依赖。

Q:能否通过API实现远程备份?
A:可以使用以下命令,需替换<your_token>为实际访问令牌:

curl -X PUT -H "Authorization: Bearer <your_token>" -d '{"type": ["db", "upload"]}' http://面板IP:5700/api/system/data/export

通过本文方法,你已掌握青龙面板数据的全生命周期管理。建议立即执行首次备份,并将备份任务加入日常运维清单,确保业务连续性。完整备份恢复模块代码可查看back/services/system.tsback/api/system.ts实现细节。

【免费下载链接】qinglong 支持 Python3、JavaScript、Shell、Typescript 的定时任务管理平台(Timed task management platform supporting Python3, JavaScript, Shell, Typescript) 【免费下载链接】qinglong 项目地址: https://gitcode.com/GitHub_Trending/qi/qinglong

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值