You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写自动解压加载最新DB备份文件的Shell脚本

解决方案

实现思路

  • 你的备份文件采用YYYY_MM_DD__HH_MM_SS的时间前缀命名,字典排序结果和时间先后顺序完全一致,无需额外解析时间戳即可快速定位最新文件
  • 先遍历备份目录匹配符合规则的备份文件,倒序排序后取第一条即为最新备份
  • 增加异常判断逻辑,避免无备份文件时执行错误操作

完整可执行脚本

# 定义备份文件存储目录,按需修改路径即可
BACKUP_DIR="/Users/Documents/development/code/docker/data"

# 自动匹配最新的备份文件
LATEST_BACKUP=$(ls "${BACKUP_DIR}"/*_db_backup_sql.qz 2>/dev/null | sort -r | head -n 1)

# 校验是否找到有效备份文件
if [ -z "${LATEST_BACKUP}" ] || [ ! -f "${LATEST_BACKUP}" ]; then
    echo "错误:未在${BACKUP_DIR}目录下找到符合规则的数据库备份文件"
    exit 1
fi

echo "找到最新备份文件:${LATEST_BACKUP}"
echo "开始执行数据库恢复操作..."

# 执行恢复操作
gunzip < "${LATEST_BACKUP}" | docker exec -i database /usr/bin/mysql -u root -p"${MYSQL_ROOT_PASSWORD}" "${MYSQL_DATABASE}"

# 输出执行结果
if [ $? -eq 0 ]; then
    echo "数据库恢复成功"
else
    echo "数据库恢复失败,请检查错误日志"
    exit 1
fi

脚本说明

  • 仅需修改BACKUP_DIR变量的值为你的实际备份文件存储目录即可长期使用
  • 脚本会自动过滤匹配后缀为_db_backup_sql.qz的文件,按文件名倒序取第一个作为最新备份
  • 增加了文件存在性校验、执行结果校验逻辑,避免异常场景下的错误操作

内容的提问来源于stack exchange,提问作者tj12

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 18:15:03