|
|
|
@@ -1,7 +1,7 @@
|
|
|
|
#!/bin/bash
|
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
|
|
|
|
#===============================================================================
|
|
|
|
#===============================================================================
|
|
|
|
# VPS 快照备份脚本 v3.15
|
|
|
|
# VPS 快照备份脚本 v3.16
|
|
|
|
# 支持: Ubuntu, Debian, CentOS, Alpine
|
|
|
|
# 支持: Ubuntu, Debian, CentOS, Alpine
|
|
|
|
# 功能: 智能识别应用 + Docker迁移 + 数据备份 + Telegram通知
|
|
|
|
# 功能: 智能识别应用 + Docker迁移 + 数据备份 + Telegram通知
|
|
|
|
#===============================================================================
|
|
|
|
#===============================================================================
|
|
|
|
@@ -19,7 +19,7 @@ LOG_FILE="/var/log/vps-snapshot.log"
|
|
|
|
print_banner() {
|
|
|
|
print_banner() {
|
|
|
|
echo -e "${BLUE}"
|
|
|
|
echo -e "${BLUE}"
|
|
|
|
echo "╔═══════════════════════════════════════════════════════════╗"
|
|
|
|
echo "╔═══════════════════════════════════════════════════════════╗"
|
|
|
|
echo "║ VPS 快照备份脚本 v3.15 ║"
|
|
|
|
echo "║ VPS 快照备份脚本 v3.16 ║"
|
|
|
|
echo "║ 智能识别 + Docker迁移 + 数据备份 ║"
|
|
|
|
echo "║ 智能识别 + Docker迁移 + 数据备份 ║"
|
|
|
|
echo "╚═══════════════════════════════════════════════════════════╝"
|
|
|
|
echo "╚═══════════════════════════════════════════════════════════╝"
|
|
|
|
echo -e "${NC}"
|
|
|
|
echo -e "${NC}"
|
|
|
|
@@ -388,12 +388,21 @@ backup_app_data() {
|
|
|
|
local snap_dir="${LOCAL_DIR:-/var/snapshots}"
|
|
|
|
local snap_dir="${LOCAL_DIR:-/var/snapshots}"
|
|
|
|
if [ -n "$backup_paths" ]; then
|
|
|
|
if [ -n "$backup_paths" ]; then
|
|
|
|
log "📦 打包数据目录..."
|
|
|
|
log "📦 打包数据目录..."
|
|
|
|
|
|
|
|
local exclude_args=""
|
|
|
|
|
|
|
|
if [ -n "$EXCLUDE_PATHS" ]; then
|
|
|
|
|
|
|
|
IFS=':' read -ra _ep <<< "$EXCLUDE_PATHS"
|
|
|
|
|
|
|
|
for _p in "${_ep[@]}"; do
|
|
|
|
|
|
|
|
[ -n "$_p" ] && exclude_args+=" --exclude=$_p"
|
|
|
|
|
|
|
|
done
|
|
|
|
|
|
|
|
log "排除路径: $EXCLUDE_PATHS"
|
|
|
|
|
|
|
|
fi
|
|
|
|
tar --exclude='*.sock' --exclude='*.pid' --exclude='node_modules' \
|
|
|
|
tar --exclude='*.sock' --exclude='*.pid' --exclude='node_modules' \
|
|
|
|
--exclude='.npm' --exclude='.cache' --exclude='__pycache__' \
|
|
|
|
--exclude='.npm' --exclude='.cache' --exclude='__pycache__' \
|
|
|
|
--exclude='*.log' --exclude='/var/log/*' \
|
|
|
|
--exclude='*.log' --exclude='/var/log/*' \
|
|
|
|
--exclude='/var/cache/*' --exclude='/tmp/*' \
|
|
|
|
--exclude='/var/cache/*' --exclude='/tmp/*' \
|
|
|
|
--exclude="$snap_dir" --exclude='/var/snapshots' \
|
|
|
|
--exclude="$snap_dir" --exclude='/var/snapshots' \
|
|
|
|
--exclude='/root/.cache' --exclude='/root/.local/share/Trash' \
|
|
|
|
--exclude='/root/.cache' --exclude='/root/.local/share/Trash' \
|
|
|
|
|
|
|
|
$exclude_args \
|
|
|
|
-czf "$output_dir/app-data.tar.gz" $backup_paths 2>/dev/null || true
|
|
|
|
-czf "$output_dir/app-data.tar.gz" $backup_paths 2>/dev/null || true
|
|
|
|
local data_size=$(du -h "$output_dir/app-data.tar.gz" 2>/dev/null | cut -f1)
|
|
|
|
local data_size=$(du -h "$output_dir/app-data.tar.gz" 2>/dev/null | cut -f1)
|
|
|
|
info "数据已保存: $output_dir/app-data.tar.gz ($data_size)"
|
|
|
|
info "数据已保存: $output_dir/app-data.tar.gz ($data_size)"
|
|
|
|
@@ -1164,6 +1173,7 @@ REMOTE_DIR="$REMOTE_DIR"
|
|
|
|
REMOTE_KEEP_DAYS="$REMOTE_KEEP_DAYS"
|
|
|
|
REMOTE_KEEP_DAYS="$REMOTE_KEEP_DAYS"
|
|
|
|
TG_BOT_TOKEN="$TG_BOT_TOKEN"
|
|
|
|
TG_BOT_TOKEN="$TG_BOT_TOKEN"
|
|
|
|
TG_CHAT_ID="$TG_CHAT_ID"
|
|
|
|
TG_CHAT_ID="$TG_CHAT_ID"
|
|
|
|
|
|
|
|
EXCLUDE_PATHS="$EXCLUDE_PATHS"
|
|
|
|
EOF
|
|
|
|
EOF
|
|
|
|
chmod 600 "$CONFIG_FILE"
|
|
|
|
chmod 600 "$CONFIG_FILE"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@@ -1204,6 +1214,10 @@ do_setup() {
|
|
|
|
read -p "Bot Token: " TG_BOT_TOKEN
|
|
|
|
read -p "Bot Token: " TG_BOT_TOKEN
|
|
|
|
[ -n "$TG_BOT_TOKEN" ] && read -p "Chat ID: " TG_CHAT_ID
|
|
|
|
[ -n "$TG_BOT_TOKEN" ] && read -p "Chat ID: " TG_CHAT_ID
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
echo ""
|
|
|
|
|
|
|
|
info "排除路径 (可选,多个用冒号分隔,如 /data/downloads:/data/media)"
|
|
|
|
|
|
|
|
read -p "排除路径 [无]: " EXCLUDE_PATHS
|
|
|
|
|
|
|
|
|
|
|
|
save_config
|
|
|
|
save_config
|
|
|
|
log "配置已保存到 $CONFIG_FILE"
|
|
|
|
log "配置已保存到 $CONFIG_FILE"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|