文件
hyb-oa/scripts/backup-storage.sh
T

51 行
1.3 KiB
Bash
可执行文件

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
BACKUP_DIR="${BACKUP_DIR:-$ROOT_DIR/deploy/trialrun/backups}"
mkdir -p "$BACKUP_DIR"
TS="$(date +%Y%m%d_%H%M%S)"
OUT_FILE="${OUT_FILE:-$BACKUP_DIR/hyb-oa-storage-${TS}.tar.gz}"
if [[ -e "$OUT_FILE" ]]; then
echo "[ERR] backup output already exists: $OUT_FILE" >&2
exit 1
fi
STORAGE_DIR_HOST="${STORAGE_DIR_HOST:-}"
if [[ -z "$STORAGE_DIR_HOST" ]]; then
if [[ -n "${STORAGE_DIR:-}" && -d "${STORAGE_DIR:-}" ]]; then
STORAGE_DIR_HOST="$STORAGE_DIR"
elif [[ -d "$ROOT_DIR/deploy/trialrun/data/storage" ]]; then
STORAGE_DIR_HOST="$ROOT_DIR/deploy/trialrun/data/storage"
else
echo "[ERR] storage dir not found; set STORAGE_DIR_HOST" >&2
exit 1
fi
fi
if [[ ! -d "$STORAGE_DIR_HOST" ]]; then
echo "[ERR] storage dir not found: $STORAGE_DIR_HOST" >&2
exit 1
fi
mkdir -p "$(dirname "$OUT_FILE")"
echo "[INFO] Storage backup start: $OUT_FILE"
echo "[INFO] Storage dir: $STORAGE_DIR_HOST"
if ! tar -czf "$OUT_FILE" -C "$STORAGE_DIR_HOST" .; then
rm -f -- "$OUT_FILE"
echo "[ERR] storage backup failed" >&2
exit 1
fi
if [[ ! -s "$OUT_FILE" ]]; then
echo "[ERR] storage backup is empty: $OUT_FILE" >&2
exit 1
fi
echo "[OK] Storage backup done: $OUT_FILE"