Appearance
25. 系统迁移与升级
本章节指导在 RHEL 8.10(主机名 ZSLinux)上使用 SecureCRT 进行系统迁移和升级,配合 SecureFX 传输备份和配置文件。内容涵盖系统备份与迁移(rsync)、RHEL 8 升级(leapp)及跨版本迁移注意事项,以数据迁移和系统升级为例,全面实用,适合初学者快速掌握和运维人员日常维护。所有操作在 ZSLinux 环境中测试,确保实验一致性。
25.1 前提条件
- RHEL 8.10 已安装(参考第 1 章),主机名设置为
ZSLinux. - 使用 SecureCRT 登录(SSH2 协议,端口 2222,参考第 6 章).
- 使用 SecureFX 传输文件(SFTP 协议).
- 具有 root 或 sudo 权限.
- 系统已订阅并启用 RHEL 和 EPEL 仓库(参考第 4 和 7 章).
- 防火墙和 SELinux 启用(参考第 13 章).
- 网络连接正常,时间同步配置完成(参考第 3 章).
- 目标服务器(示例 IP:192.168.1.200)已准备好,SSH 免密登录配置完成(参考第 6 章).
25.2 系统迁移
25.2.1 系统备份
- 创建系统备份(参考第 17 章):bash
tar -zcvf /backup/system-$(date +%F).tar.gz /etc /var /home # 备份关键目录 rsync -av /backup/system-$(date +%F).tar.gz 192.168.1.200:/backup # 传输备份到目标服务器
25.2.2 使用 rsync 迁移系统数据
- 迁移系统数据到目标服务器:bash
rsync -av --progress /etc root@192.168.1.200:/etc # 迁移 /etc 目录 rsync -av --progress /var root@192.168.1.200:/var # 迁移 /var 目录 rsync -av --progress /home root@192.168.1.200:/home # 迁移 /home 目录
25.2.3 迁移用户与配置文件
- 迁移用户账户:bash
getent passwd > /backup/passwd.bak # 备份用户账户信息 getent group > /backup/group.bak # 备份用户组信息 rsync -av /backup/passwd.bak /backup/group.bak root@192.168.1.200:/backup # 传输到目标服务器 - 在目标服务器上恢复用户:bash
# 在目标服务器 (192.168.1.200) 上: cp /backup/passwd.bak /etc/passwd # 恢复用户账户 cp /backup/group.bak /etc/group # 恢复用户组
25.2.4 保留服务配置
- 备份服务配置(示例:Apache, Postfix):bash
cp -r /etc/httpd /backup/httpd-$(date +%F) # 备份 Apache 配置 cp -r /etc/postfix /backup/postfix-$(date +%F) # 备份 Postfix 配置 rsync -av /backup/httpd-$(date +%F) /backup/postfix-$(date +%F) root@192.168.1.200:/backup # 传输到目标服务器
25.3 系统升级
25.3.1 使用 leapp 工具升级
- 安装
leapp:bashdnf install -y leapp # 安装 leapp 升级工具 - 运行升级前检查:bash
leapp preupgrade # 检查系统升级兼容性 cat /var/log/leapp/leapp-report.txt # 查看升级报告 - 执行升级(示例:RHEL 8.10 到 9.x):bash
leapp upgrade # 执行系统升级 reboot # 重启完成升级 - 验证升级:bash
cat /etc/redhat-release # 检查系统版本
25.3.2 处理遗留配置
- 检查软件兼容性:bash
leapp answer --section check_vulnerabilities.accept=1 # 接受已知漏洞继续升级 rpm -qa | grep el8 # 检查遗留 RHEL 8 包 - 清理遗留配置:bash
mv /etc/httpd/conf.d/old.conf /backup/old.conf-$(date +%F) # 备份旧配置 dnf remove *el8 # 移除不兼容的 RHEL 8 包
25.4 验证
- 验证迁移:bash
rsync --dry-run -av /etc root@192.168.1.200:/etc # 模拟迁移,检查文件一致性 ssh root@192.168.1.200 "getent passwd" # 检查目标服务器用户账户 - 验证服务配置:bash
ssh root@192.168.1.200 "systemctl status httpd" # 检查目标服务器 Apache 状态 ssh root@192.168.1.200 "mailq" # 检查目标服务器 Postfix 队列 - 验证升级:bash
cat /etc/redhat-release # 确认升级后的系统版本 systemctl list-units --state=failed # 检查失败的服务 - 测试 SSH 连接:bash
ssh -p 2222 testuser@ZSLinux # 测试 SSH 连接(参考第 6 章) - 常见问题:
- 迁移失败:检查 SSH 免密登录(
ssh-copy-id) 或目标服务器磁盘空间(df -h)。 - 升级失败:查看
leapp日志(/var/log/leapp/leapp-report.txt)或修复不兼容包(dnf remove)。 - 服务不可用:确认目标服务器配置(
/etc/httpd,/etc/postfix)或 SELinux(ausearch -m avc)。
- 迁移失败:检查 SSH 免密登录(
25.5 实践任务
- 使用 SecureCRT 登录
ZSLinux,备份/etc和/var到目标服务器(192.168.1.200)。 - 迁移用户账户到目标服务器并验证。
- 使用
leapp执行 RHEL 8.10 升级前检查并查看报告。 - 备份 Apache 配置并传输到目标服务器。
25.6 自测问题
- 问题:如何使用
rsync迁移/etc目录?- 答案:
rsync -av /etc root@192.168.1.200:/etc
- 答案:
- 问题:如何检查 RHEL 升级兼容性?
- 答案:
leapp preupgrade并查看/var/log/leapp/leapp-report.txt
- 答案:
- 问题:如何验证目标服务器用户迁移?
- 答案:
ssh root@192.168.1.200 "getent passwd"
- 答案:
