#!/bin/bash

# 备份目录
BACKUP_DIR="/opt/backup"
DATE=$(date +%Y%m%d_%H%M%S)
PROJECT_DIR="/opt/dify/docker"   # 你的 docker-compose.yaml 所在目录
RETENTION_DAYS=7

# 创建备份目录
mkdir -p $BACKUP_DIR

echo "开始 Dify 全量备份: $DATE"

# 1. 备份 volumes 目录(包含所有数据)
echo "备份 volumes 目录..."
cd $PROJECT_DIR
tar -czf $BACKUP_DIR/dify_volumes_$DATE.tar.gz volumes

# 2. 备份 docker-compose.yaml
echo "备份 docker-compose.yaml..."
cp $PROJECT_DIR/docker-compose.yaml $BACKUP_DIR/docker-compose_$DATE.yaml

# 3. 备份 .env 文件(如果有)
if [ -f "$PROJECT_DIR/.env" ]; then
    echo "备份 .env 文件..."
    cp $PROJECT_DIR/.env $BACKUP_DIR/env_$DATE.env
fi

# 4. 创建最终备份包
echo "创建最终备份包..."
cd $BACKUP_DIR
tar -czf dify_full_backup_$DATE.tar.gz dify_volumes_$DATE.tar.gz docker-compose_$DATE.yaml env_$DATE.env 2>/dev/null

# 5. 清理中间文件
rm -f dify_volumes_$DATE.tar.gz docker-compose_$DATE.yaml env_$DATE.env

# 6. 清理旧备份(只保留最近7天)
find $BACKUP_DIR -name "dify_full_backup_*.tar.gz" -mtime +$RETENTION_DAYS -delete

echo "Dify 全量备份完成: $BACKUP_DIR/dify_full_backup_$DATE.tar.gz"
echo "备份大小: $(du -h $BACKUP_DIR/dify_full_backup_$DATE.tar.gz | cut -f1)"

打开终端,输入以下命令来编辑你当前用户的 crontab 文件:

crontab -e

如果你想让 /home/user/my_script.sh 这个脚本在每天早上 8:30 运行,你需要添加这样一行:

30 8 * * * /bin/bash /home/user/my_script.sh
Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐