不能直接通过一个简单的“一键脚本”将 CentOS 7.9 无缝迁移到 Rocky Linux。
原因如下:
❌ 为什么没有“一键升级”?
-
底层架构不同:
- CentOS 7 基于 RHEL 7(内核 3.10,使用 systemd + yum)。
- Rocky Linux 8/9 基于 RHEL 8/9(内核 4.18+ / 5.14+,使用 dnf/rpm)。
- 大版本跨越(Major Version Jump) 不支持原地升级(In-place Upgrade),就像你不能直接把 Windows 7 升级到 Windows 11 一样。
-
软件包不兼容:
- RPM 包、依赖关系、系统服务配置在 major version 之间不兼容。
yum→dnf的切换需要大量手动干预,且极易出错。
-
官方无支持路径:
- Red Hat/CentOS/Rocky 官方均不提供从 RHEL 7 直接升级到 RHEL 8/9 的原地升级工具。
✅ 正确做法:备份后全新安装(Reinstall)
这是唯一安全、稳定、被官方推荐的方式。
📋 迁移步骤概览:
| 步骤 | 操作 | 说明 |
|---|---|---|
| 1️⃣ | 数据备份 | 备份 /etc、数据库、网站文件、自定义配置等 |
| 2️⃣ | 记录环境 | 记录已安装的软件包列表、IP 地址、用户权限、crontab 等 |
| 3️⃣ | 全新安装 Rocky Linux | 在相同硬件或虚拟机上安装 Rocky Linux 8 或 9 |
| 4️⃣ | 恢复数据与配置 | 将备份的数据和配置文件恢复到新系统 |
| 5️⃣ | 重新安装软件 | 根据需求重新安装所需的服务(如 Nginx, MySQL, PHP 等) |
| 6️⃣ | 测试验证 | 确保所有服务正常运行 |
🔧 辅助脚本建议(非自动升级,而是帮助准备迁移)
虽然不能一键升级,但你可以编写脚本辅助准备迁移工作:
✅ 脚本功能示例:收集当前系统信息
#!/bin/bash
# backup_info.sh - 收集 CentOS 7 系统信息以便在新系统中参考
echo "=== System Info ==="
hostnamectl
uname -a
echo "=== Installed Packages ==="
rpm -qa --qf '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}n' > installed_packages.txt
echo "=== Network Config ==="
ip addr show > network_config.txt
cat /etc/resolv.conf >> network_config.txt
echo "=== Cron Jobs ==="
crontab -l > cron_jobs.txt 2>/dev/null || echo "No crontab"
echo "=== Custom Scripts & Data ==="
tar czf data_backup.tar.gz /var/www/html /opt/myapp /etc/myconfig 2>/dev/null
echo "Backup complete. Files: installed_packages.txt, network_config.txt, cron_jobs.txt, data_backup.tar.gz"
✅ 在新 Rocky Linux 上恢复的参考命令
# 安装基础环境(以 Rocky 8 为例)
dnf install epel-release
dnf groupinstall "Development Tools"
# 恢复网络配置、Cron、数据等...
# 注意:许多服务名称可能变化(如 httpd vs nginx, mysqld vs mariadb)
⚠️ 注意事项
-
选择 Rocky Linux 版本:
- Rocky Linux 8 更接近 CentOS 7 的使用习惯(但仍需适应)。
- Rocky Linux 9 是最新 LTS 版本,推荐用于新项目。
- 不要混用:CentOS 7 → Rocky 8 或 Rocky 9,两者都需全新安装。
-
应用兼容性检查:
- 某些旧版软件(如 PHP 5.4、MySQL 5.5)在 Rocky 8/9 中不再默认提供,需使用第三方源或容器化部署。
-
考虑容器化/虚拟化:
- 如果业务复杂,建议使用 Docker/Kubernetes 隔离应用,简化迁移过程。
✅ 总结
没有一键升级脚本。必须:备份 → 全新安装 Rocky Linux → 恢复数据。
如果你希望自动化这个过程,可以编写 Ansible playbook 来自动化新系统的初始化和数据恢复,但这不是“原地升级”,而是“自动化重建”。
如需进一步帮助(如具体服务迁移指南),请告诉我你的主要应用场景(Web、数据库、大数据等)。
云知识CLOUD