首页主机资讯centos vnc如何进行备份恢复

centos vnc如何进行备份恢复

时间2026-01-15 21:21:05发布访客分类主机资讯浏览1199
导读: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 → 端口 5901DISPLAY :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 & ),并确保已安装对应桌面环境。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: centos vnc如何进行备份恢复
本文地址: https://pptw.com/jishu/780471.html
centos vnc如何进行负载均衡 如何修改CentOS的DHCP范围

游客 回复需填写必要信息