centos vnc如何进行备份恢复
导读:CentOS VNC 备份与恢复 一、备份清单与命令 建议按用户与实例维度备份,核心内容包括:systemd 服务单元、VNC 密码文件、会话目录、桌面启动脚本、以及防火墙/SELinux 放行策略。以下以实例 :1 为例,实际可按需扩展...
CentOS VNC 备份与恢复
一、备份清单与命令
- 建议按用户与实例维度备份,核心内容包括:systemd 服务单元、VNC 密码文件、会话目录、桌面启动脚本、以及防火墙/SELinux 放行策略。以下以实例 :1 为例,实际可按需扩展到 :2、:3…。
- 备份命令示例(以 root 操作为例,其他用户将路径中的 /root 替换为对应用户家目录):
#!/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"
- 说明:
- 常见服务文件模板位于 /lib/systemd/system/vncserver@.service,实际启用的是 /etc/systemd/system/vncserver@:1.service 等实例文件。
- 首次设置 VNC 密码通常使用 vncpasswd,其生成的密码文件位于对应用户的 ~/.vnc/passwd。
二、恢复步骤与命令
- 恢复命令示例(仍以实例 :1 为例,先停止旧会话并恢复文件,再重载 systemd 并启动服务):
#!/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"
- 说明:
- 恢复后首次启动若报端口占用,可先确认并清理旧进程或旧 socket(见下一节排错)。
- 若使用云厂商安全组/本机防火墙,请同步放行对应端口(见下一节端口说明)。
三、端口与防火墙要点
- 显示号与端口映射:DISPLAY :1 → 端口 5901,DISPLAY :2 → 5902,以此类推。
- firewalld 放行示例(永久生效):
firewall-cmd --permanent --add-port=5901/tcp
firewall-cmd --reload
- 云服务器安全组需同样放行对应 TCP 5901 端口;客户端连接地址形如 服务器IP:1。
四、常见问题与验证
- 验证服务与端口:
systemctl status "vncserver@:1.service"
ss -lntp | grep -E '590[0-9]'
- 常见排错要点:
- 端口被占用或残留 socket:清理旧会话后再启
vncserver -kill :1 rm -f /tmp/.X11-unix/X1 - 启动失败先查看日志定位:
journalctl -u "vncserver@:1.service" -xe - 桌面未显示或黑屏:检查 ~/.vnc/xstartup 是否启动了桌面会话(如 mate-session & 或 gnome-session & ),并确保已安装对应桌面环境。
- 端口被占用或残留 socket:清理旧会话后再启
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos vnc如何进行备份恢复
本文地址: https://pptw.com/jishu/780471.html
