v3.13: 紧急修复 - 不删除系统服务,只清理用户服务
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
# VPS 快照备份脚本 v3.12
|
# VPS 快照备份脚本 v3.13
|
||||||
# 支持: 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.12 ║"
|
echo "║ VPS 快照备份脚本 v3.13 ║"
|
||||||
echo "║ 智能识别 + Docker迁移 + 数据备份 ║"
|
echo "║ 智能识别 + Docker迁移 + 数据备份 ║"
|
||||||
echo "╚═══════════════════════════════════════════════════════════╝"
|
echo "╚═══════════════════════════════════════════════════════════╝"
|
||||||
echo -e "${NC}"
|
echo -e "${NC}"
|
||||||
@@ -739,22 +739,24 @@ do_full_restore() {
|
|||||||
# 删除快照后新增的 systemd 服务
|
# 删除快照后新增的 systemd 服务
|
||||||
if [ -f "$tmp_dir/systemd-services.txt" ]; then
|
if [ -f "$tmp_dir/systemd-services.txt" ]; then
|
||||||
log "清理新增的 systemd 服务..."
|
log "清理新增的 systemd 服务..."
|
||||||
# 检查两个目录: /etc/systemd/system 和 /usr/lib/systemd/system
|
# 只清理用户安装的服务,不动系统服务
|
||||||
for svc_dir in /etc/systemd/system /usr/lib/systemd/system; do
|
# 只检查 /etc/systemd/system (用户服务),不检查 /usr/lib/systemd/system (系统服务)
|
||||||
for f in "$svc_dir"/*.service; do
|
for f in /etc/systemd/system/*.service; do
|
||||||
[ -e "$f" ] || continue
|
[ -e "$f" ] || continue
|
||||||
local fname=$(basename "$f")
|
local fname=$(basename "$f")
|
||||||
# 跳过系统核心服务
|
# 跳过系统核心服务和模板服务
|
||||||
case "$fname" in
|
case "$fname" in
|
||||||
systemd-*|dbus*|ssh*|cron*|rsyslog*|networking*) continue ;;
|
systemd-*|dbus*|ssh*|cron*|rsyslog*|networking*|getty*|serial-getty*) continue ;;
|
||||||
esac
|
cloud-*|apt-*|apparmor*|console-*|keyboard-*|grub-*) continue ;;
|
||||||
if ! grep -qx "$fname" "$tmp_dir/systemd-services.txt" 2>/dev/null; then
|
docker*|containerd*|snap*|snapd*) continue ;;
|
||||||
log "停止并删除服务: $fname"
|
*@*) continue ;; # 跳过所有模板服务
|
||||||
systemctl stop "$fname" 2>/dev/null || true
|
esac
|
||||||
systemctl disable "$fname" 2>/dev/null || true
|
if ! grep -qx "$fname" "$tmp_dir/systemd-services.txt" 2>/dev/null; then
|
||||||
rm -f "$f"
|
log "停止并删除服务: $fname"
|
||||||
fi
|
systemctl stop "$fname" 2>/dev/null || true
|
||||||
done
|
systemctl disable "$fname" 2>/dev/null || true
|
||||||
|
rm -f "$f"
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
systemctl daemon-reload 2>/dev/null || true
|
systemctl daemon-reload 2>/dev/null || true
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user