问题描述: - merge_backups 函数使用 basename 获取文件名 - 但文件实际在子目录中 (folders/folders.tar.gz, mysql/mysql.sql.gz) - tar -C ${TEMP_DIR} 切换到临时目录后找不到文件 修复方案: - 使用 ${path#${TEMP_DIR}/} 获取相对于临时目录的相对路径 - 正确构建文件列表传递给 tar 命令 - 确保 tar 能找到正确的文件路径 示例: - 原: basename /tmp/xxx/folders/folders.tar.gz → folders.tar.gz (错误) - 新: /tmp/xxx/folders/folders.tar.gz#/tmp/xxx/ → folders/folders.tar.gz (正确)
问题描述: - backup_folders() 和 backup_mysql() 函数使用 echo 返回文件路径 - 但 log_info 也输出到 stdout,导致主函数捕获了所有日志而非路径 - 最终 merge_backups 收到空参数,显示"没有需要打包的文件" 修复内容: - 将所有日志输出重定向到 stderr (>&2) - 简化 tar 命令的输出处理逻辑 - 确保函数返回值只包含文件路径 影响文件: - bin/backup.sh - log() 函数添加 >&2 重定向 - bin/cleanup.sh - 所有 log 函数添加 >&2 重定向
实现功能: - 文件夹和 MySQL 容器数据库备份 - tar.gz 压缩和自动清理旧备份 - systemd 定时任务集成 - 远程一键安装脚本(通过 Gitea 仓库) - 完整的 llmdoc 文档系统 安装方式: bash <(curl -sL https://gitea.bcde.io/wangdefa/docker-backup/raw/branch/main/install.sh) 配置文件位置:/etc/docker-backup/config.yml 命令:docker-backup, docker-backup-cleanup