如何编写自动解压加载最新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
相关产品推荐
相关产品推荐

