centos

centos vnc如何进行备份恢复

小樊
39
2025-12-25 06:01:24
栏目: 智能运维

CentOS VNC 备份与恢复

一、备份清单与命令

#!/usr/bin/env bash
set -e

USER=root
DISPLAY=:1
BAK_DIR="/root/vnc_backup_$(date +%F_%H-%M-%S)"
mkdir -p "$BAK_DIR"

# 1) systemd 服务单元
cp -a /lib/systemd/system/vncserver@.service "/etc/systemd/system/vncserver@${DISPLAY}.service" 2>/dev/null || true
cp -a "/etc/systemd/system/vncserver@${DISPLAY}.service" "$BAK_DIR/"

# 2) VNC 密码文件(存在才备份)
[ -f "$HOME/.vnc/passwd" ] && cp -a "$HOME/.vnc/passwd" "$BAK_DIR/"

# 3) 会话目录(含日志、pid 等)
[ -d "$HOME/.vnc" ] && cp -a "$HOME/.vnc" "$BAK_DIR/"

# 4) 桌面启动脚本
[ -f "$HOME/.vnc/xstartup" ] && cp -a "$HOME/.vnc/xstartup" "$BAK_DIR/"

# 5) 防火墙规则导出(firewalld)
if command -v firewall-cmd >/dev/null 2>&1; then
  firewall-cmd --list-all > "$BAK_DIR/firewalld-rules.txt"
fi

# 6) SELinux 布尔值快照(若使用 SELinux)
if command -v getsebool >/dev/null 2>&1; then
  getsebool -a > "$BAK_DIR/selinux-booleans.txt"
fi

# 7) 当前监听端口快照
ss -lntp | grep -E '590[0-9]' > "$BAK_DIR/vnc_ports.txt" || true

echo "VNC 备份完成:$BAK_DIR"

二、恢复步骤与命令

#!/usr/bin/env bash
set -e

USER=root
DISPLAY=:1
BAK_DIR="/root/vnc_backup_2025-12-25_10-00-00"   # 替换为你的备份目录

# 0) 如已有会话,先停止
su - "$USER" -c "vncserver -kill $DISPLAY" >/dev/null 2>&1 || true

# 1) 恢复 systemd 服务单元
cp -a "$BAK_DIR/vncserver@${DISPLAY}.service" "/etc/systemd/system/"

# 2) 恢复 VNC 密码与会话目录
[ -f "$BAK_DIR/passwd" ] && cp -a "$BAK_DIR/passwd" "$HOME/.vnc/passwd"
[ -d "$BAK_DIR/.vnc" ] && rsync -a "$BAK_DIR/.vnc/" "$HOME/.vnc/"

# 3) 恢复 xstartup(若存在)
[ -f "$BAK_DIR/xstartup" ] && cp -a "$BAK_DIR/xstartup" "$HOME/.vnc/xstartup"

# 4) 若备份了 firewalld 规则,按需恢复(示例为开放 5901/tcp)
# firewall-cmd --permanent --add-port=5901/tcp
# firewall-cmd --reload

# 5) 重载 systemd 并启动
systemctl daemon-reload
systemctl enable "vncserver@${DISPLAY}.service"
systemctl start  "vncserver@${DISPLAY}.service"

echo "VNC 恢复完成,实例:$DISPLAY"

三、端口与防火墙要点

firewall-cmd --permanent --add-port=5901/tcp
firewall-cmd --reload

四、常见问题与验证

systemctl status "vncserver@:1.service"
ss -lntp | grep -E '590[0-9]'

0
看了该问题的人还看了