一次备份优化的改造

早上检查备份任务的执行,发现禅道的备份任务没有按照正常的计划执行
image

查查原因,发现禅道的目录太大了,有50G+,虚拟机目录本身就100G,赶紧查下是什么占用了太多的空间,www/tmp/backup目录占用了绝大数的,原来禅道系统自己会设置备份的任务,备份到www/tmp/backup目录,知道原因就简单了,通过exclude排除备份脚本的目录,改完后内容如下

function sync_prod() {
    write_log "INFO" "同步禅道系统"
    # 改动部分,原备份方式
    # rsync -avz --progress  root@$PRODUCTION_HOST:/data/docker_volume/zentaopms/www ${APP_HOME}/
    # 新备份方式
    rsync -avz --progress \
    --exclude='tmp/backup/***' \
    root@$PRODUCTION_HOST:/data/docker_volume/zentaopms/www \
    /opt/zentao/
    
    # 2. 从生产环境备份mysql数据到本地并加载到当前的数据库中
    # 2.1 启动镜像
    cd $APP_HOME && docker compose up -d
    sleep 5

    # 2.2 删除当前数据库
    cd $APP_HOME && docker compose exec zentao /bin/bash -c "mysql -u root -pPASSWORD zentaopms -e 'drop database zentaopms'"
    # 2.2 恢复数据
    cd $APP_HOME && docker compose exec zentao /bin/bash -c "mysql -u root -pPASSWORD mysql -e 'create database zentaopms'"
    cd $APP_HOME && docker compose exec zentao /bin/bash -c "mysql -u root -pPASSWORD zentaopms < /data/docker_volume/zentaopms/zentaopms.sql"
    # 2.3 停止镜像
    cd $APP_HOME && docker compose down
}

保存后测试执行,备份可以正常进行,而且备份文件大大减少

wechat_2025-07-15_122853_868