Files
homelab/scripts/backup-to-nas.sh
T

34 lines
1.2 KiB
Bash
Executable File

#!/usr/bin/env bash
# ==============================================================================
# Mac mini 核心数据自动备份至极空间 Z4 (20TB NAS) 脚本
# 每天凌晨 03:30 自动打包备份 Vaultwarden 密码库、Sun-Panel 导航页及 Homelab 配置
# ==============================================================================
set -euo pipefail
NAS_BACKUP_DIR="/Users/ixvii0iv/nas/个人空间/MacMini_Backups"
TIMESTAMP=$(date '+%Y%m%d_%H%M%S')
# 确保极空间已挂载
/Users/ixvii0iv/homelab/scripts/mount-zspace.sh >/dev/null 2>&1 || true
if [ ! -d "/Users/ixvii0iv/nas/个人空间" ]; then
echo "[$(date '+%Y-%m-%d %H:%M:%S')] [WARN] 极空间未挂载,跳过本次备份"
exit 0
fi
mkdir -p "$NAS_BACKUP_DIR"
ARCHIVE="$NAS_BACKUP_DIR/homelab_backup_${TIMESTAMP}.tar.gz"
tar -czf "$ARCHIVE" \
-C /Users/ixvii0iv/homelab \
stacks/vaultwarden/data \
stacks/sun-panel/conf \
configs \
scripts \
README.md PLAN.md CHANGELOG.md 2>/dev/null || true
# 保留最近 30 份备份
ls -1t "$NAS_BACKUP_DIR"/homelab_backup_*.tar.gz 2>/dev/null | tail -n +31 | xargs rm -f 2>/dev/null || true
echo "[$(date '+%Y-%m-%d %H:%M:%S')] [OK] 已备份至极空间: $ARCHIVE"