新增备份监控与定时配置

This commit is contained in:
yml2213
2026-08-16 23:53:50 +08:00
parent 66cb03ebce
commit f67ee12d72
19 changed files with 612 additions and 3 deletions
+25 -1
View File
@@ -146,7 +146,7 @@ validate_env() {
exit 1
fi
local app_env caddy_domain caddy_email mysql_dsn redis_addr storage_endpoint backend_uid backend_gid backup_dir backup_restore_dir backup_oss_uri backup_user
local app_env caddy_domain caddy_email mysql_dsn redis_addr storage_endpoint backend_uid backend_gid backup_dir backup_status_dir backup_restore_dir backup_oss_uri backup_user
app_env="$(require_env APP_ENV)"
caddy_domain="$(require_env CADDY_DOMAIN)"
caddy_email="$(require_env CADDY_EMAIL)"
@@ -162,6 +162,7 @@ validate_env() {
require_env STORAGE_ACCESS_KEY_ID >/dev/null
require_env STORAGE_SECRET_ACCESS_KEY >/dev/null
backup_dir="$(require_env BACKUP_DIR)"
backup_status_dir="$(require_env BACKUP_STATUS_DIR)"
backup_restore_dir="$(require_env BACKUP_RESTORE_DIR)"
backup_oss_uri="$(require_env BACKUP_OSS_URI)"
require_env BACKUP_PASSPHRASE >/dev/null
@@ -216,6 +217,10 @@ validate_env() {
log_error "BACKUP_DIR 必须是 /data 之下的具体绝对路径,当前值:${backup_dir}"
exit 1
fi
if [[ "${backup_status_dir}" != "${backup_dir}/"* ]]; then
log_error "BACKUP_STATUS_DIR 必须位于 BACKUP_DIR 之下,当前值:${backup_status_dir}"
exit 1
fi
if [[ "${backup_restore_dir}" != /data/* || "${backup_restore_dir}" == "/data" || "${backup_restore_dir}" == "${backup_dir}" ]]; then
log_error "BACKUP_RESTORE_DIR 必须是与 BACKUP_DIR 不同的 /data 子目录,当前值:${backup_restore_dir}"
exit 1
@@ -403,6 +408,24 @@ prepare_log_dir() {
chmod 700 "${BACKEND_LOG_DIR}"
}
prepare_backup_status_dir() {
local backend_uid backend_gid status_dir owner_mismatch
backend_uid="$(require_env BACKEND_UID)"
backend_gid="$(require_env BACKEND_GID)"
status_dir="$(require_env BACKUP_STATUS_DIR)"
mkdir -p "${status_dir}"
owner_mismatch="$(find "${status_dir}" \( ! -uid "${backend_uid}" -o ! -gid "${backend_gid}" \) -print -quit)"
if [[ -n "${owner_mismatch}" ]]; then
if [[ "${EUID}" -ne 0 ]]; then
log_error "备份状态目录存在属主不匹配的文件:${owner_mismatch}"
log_error "请先执行:sudo chown -R ${backend_uid}:${backend_gid} ${status_dir}"
exit 1
fi
chown -R "${backend_uid}:${backend_gid}" "${status_dir}"
fi
chmod 700 "${status_dir}"
}
wait_service_healthy() {
local service="$1"
local label="$2"
@@ -557,6 +580,7 @@ main() {
validate_env
export_caddy_env
prepare_log_dir
prepare_backup_status_dir
# 选号网需在 build caddy 之前准备 show-dist 与 conf.d
prepare_show_site