修复备份恢复路径处理
This commit is contained in:
@@ -6,6 +6,9 @@ COMPOSE_FILE="${ROOT_DIR}/deploy/docker-compose.prod.yml"
|
|||||||
BACKEND_ENV="${ROOT_DIR}/backend/.env"
|
BACKEND_ENV="${ROOT_DIR}/backend/.env"
|
||||||
BACKUP_ROOT="${BACKUP_ROOT:-${ROOT_DIR}/backups}"
|
BACKUP_ROOT="${BACKUP_ROOT:-${ROOT_DIR}/backups}"
|
||||||
HELPER_IMAGE="${BACKUP_HELPER_IMAGE:-redis:7.4-alpine}"
|
HELPER_IMAGE="${BACKUP_HELPER_IMAGE:-redis:7.4-alpine}"
|
||||||
|
if [[ "${BACKUP_ROOT}" != /* ]]; then
|
||||||
|
BACKUP_ROOT="${ROOT_DIR}/${BACKUP_ROOT}"
|
||||||
|
fi
|
||||||
|
|
||||||
RED='\033[0;31m'
|
RED='\033[0;31m'
|
||||||
GREEN='\033[0;32m'
|
GREEN='\033[0;32m'
|
||||||
@@ -36,6 +39,14 @@ need_cmd() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
absolute_dir() {
|
||||||
|
local dir="$1"
|
||||||
|
(
|
||||||
|
cd "${dir}"
|
||||||
|
pwd -P
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
show_help() {
|
show_help() {
|
||||||
cat << EOF
|
cat << EOF
|
||||||
用法: ./scripts/backup-prod.sh <命令> [选项]
|
用法: ./scripts/backup-prod.sh <命令> [选项]
|
||||||
@@ -416,6 +427,7 @@ restore_all() {
|
|||||||
need_cmd docker
|
need_cmd docker
|
||||||
local backup_dir="$1"
|
local backup_dir="$1"
|
||||||
local yes="$2"
|
local yes="$2"
|
||||||
|
local restore_ok=0
|
||||||
|
|
||||||
if [[ -z "${backup_dir}" || ! -d "${backup_dir}" ]]; then
|
if [[ -z "${backup_dir}" || ! -d "${backup_dir}" ]]; then
|
||||||
log_error "备份目录不存在:${backup_dir}"
|
log_error "备份目录不存在:${backup_dir}"
|
||||||
@@ -425,6 +437,18 @@ restore_all() {
|
|||||||
log_error "restore 会覆盖当前生产数据库、MinIO、Redis、Caddy volume 和配置文件。确认执行请追加 --yes"
|
log_error "restore 会覆盖当前生产数据库、MinIO、Redis、Caddy volume 和配置文件。确认执行请追加 --yes"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
backup_dir="$(absolute_dir "${backup_dir}")"
|
||||||
|
|
||||||
|
restore_failure_cleanup() {
|
||||||
|
local exit_code=$?
|
||||||
|
trap - ERR
|
||||||
|
if [[ "${restore_ok}" != "1" ]]; then
|
||||||
|
log_warn "恢复失败,尝试启动当前配置下的服务,便于继续排查"
|
||||||
|
compose up -d || true
|
||||||
|
fi
|
||||||
|
exit "${exit_code}"
|
||||||
|
}
|
||||||
|
trap restore_failure_cleanup ERR
|
||||||
|
|
||||||
prepare_restore_env "${backup_dir}"
|
prepare_restore_env "${backup_dir}"
|
||||||
log_warn "即将从 ${backup_dir} 恢复,当前生产数据会被覆盖。"
|
log_warn "即将从 ${backup_dir} 恢复,当前生产数据会被覆盖。"
|
||||||
@@ -439,6 +463,8 @@ restore_all() {
|
|||||||
|
|
||||||
log "启动生产服务"
|
log "启动生产服务"
|
||||||
compose up -d
|
compose up -d
|
||||||
|
restore_ok=1
|
||||||
|
trap - ERR
|
||||||
log_success "恢复完成。建议立刻执行健康检查并抽查图片/二维码/订单数据。"
|
log_success "恢复完成。建议立刻执行健康检查并抽查图片/二维码/订单数据。"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user