在Dify中需通过外部调度器调用API实现定时备份:先启用ENABLE_BACKUP_API并重启服务,再用Python脚本依次调用/v1/backup/dsl/export和/v1/backup/db/snapshot接口,最后配置crontab每周日凌晨2点执行。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

在Dify中设计定时备份数据库与应用DSL的自动化脚本,需绕过Dify平台本身不提供服务器级任务调度的限制,转而借助外部调度器触发Dify提供的API接口完成备份动作。该方案要求你已部署Dify后端服务(非SaaS版),并拥有其管理权限与API密钥。
确认Dify后端是否启用备份相关API
登录Dify部署服务器,打开后端配置文件 config.py 或 .env,检查是否存在 ENABLE_BACKUP_API=True 或类似开关项。若未启用,直接调用备份接口将返回403错误。
执行命令验证API可达性:curl -X GET "http://localhost:5001/v1/backup/status" -H "Authorization: Bearer YOUR_API_KEY"。返回 {"status":"disabled"} 表示未开启,必须先修改配置并重启后端服务。
编写Python脚本封装备份请求
方法一:使用requests调用DSL导出与数据库快照双接口
创建 dify_backup.py 文件,写入以下内容:
导入模块 → 设置Dify后端地址与API密钥 → 构造含时间戳的备份路径 → 先调用 /v1/backup/dsl/export 导出当前工作区DSL为JSON → 再调用 /v1/backup/db/snapshot 触发数据库物理备份 → 检查两接口响应状态码是否均为200。
注意:DSL导出接口默认只导出当前团队下所有应用的DSL定义,不包含运行时数据;数据库快照接口依赖后端已配置好pg_dump或mysqldump路径,【若未配置dump工具路径,该接口将静默失败且无错误日志】。
配置Linux系统级定时任务
第一步:将备份脚本设为可执行:chmod +x /opt/dify/scripts/dify_backup.py
第二步:编辑root用户的crontab:sudo crontab -e
第三步:添加行:0 2 * * 0 /usr/bin/python3 /opt/dify/scripts/dify_backup.py >> /var/log/dify_backup.log 2>&1,表示每周日凌晨2点执行。
第四步:保存退出后,手动运行一次测试:sudo /usr/bin/python3 /opt/dify/scripts/dify_backup.py,确认日志中出现 "dsl_export_success": true 和 "db_snapshot_status": "completed" 字样。
这一步操作起来很简单,直接把文件拖进去就行。但务必确认cron使用的Python路径与脚本中#!/usr/bin/env python3解析的实际路径一致,否则会因找不到模块报错。


















