切换阿里云 ECS 实例的操作系统(如从 CentOS 切换到 Ubuntu,或重装系统)属于高风险操作,因为新系统会格式化磁盘并覆盖原有数据。网站内容不会自动保留,必须提前手动备份。以下是确保数据不丢失的标准流程:
✅ 核心原则:先备份,再操作
⚠️ 注意:阿里云“更换操作系统”功能(在控制台操作)不会保留原系统盘数据,仅保留数据盘(如有)。
🔒 操作步骤(确保数据安全)
1️⃣ 确认磁盘结构
- 登录阿里云控制台 → ECS 实例详情 → 查看「存储」标签页
- 系统盘(通常
/dev/vda):存放操作系统 + 网站代码/数据库等 → 更换系统后清空 - 数据盘(如
/dev/vdb):若网站内容部署在此盘,则可保留(需挂载到新系统)
- 系统盘(通常
2️⃣ 完整备份网站内容
即使使用数据盘,也建议做全量备份以防误操作:
# 示例:打包网站目录和配置文件
tar -czf website_backup_$(date +%F).tar.gz
/var/www/html
/etc/nginx/conf.d/
/etc/php/*/fpm.conf
/home/mysql_dump.sql # 如有本地数据库导出
或使用阿里云工具:
- 快照:对系统盘创建快照(但更换系统后无法直接恢复该快照到同一实例)
- 云助手脚本:自动上传备份至 OSS/SLS
- RDS/Redis 等云产品:单独备份数据库(不要依赖本地 mysqldump)
3️⃣ 迁移配置与代码
- 将备份文件上传至:
- 对象存储(OSS)
- 另一台临时 ECS
- Git 仓库(推荐用于代码版本管理)
- 记录关键配置:Nginx/Apache 配置、PHP/Python 环境版本、crontab 任务、SSL 证书路径等
4️⃣ 执行系统切换
在控制台选择:
- 「更多」→「云盘」→「更换操作系统」
(或「重装系统」,效果相同) - 选择目标镜像(如 Ubuntu 22.04 LTS)
- 勾选「保留数据盘」(如有独立数据盘且网站内容在其上)
5️⃣ 恢复服务
新系统启动后:
- 重新安装 Web 服务器、语言环境(如
apt install nginx php-fpm) - 解压备份文件至对应目录
- 修改权限、重启服务
chown -R www-data:www-data /var/www/html systemctl restart nginx - 验证 SSL、防火墙规则、监控告警等
🛡️ 最佳实践建议
| 场景 | 推荐方案 |
|---|---|
| 频繁更新代码 | 使用 Git + CI/CD(如 Jenkins/GitLab CI),避免手动部署 |
| 高可用要求 | 多实例负载均衡 + 共享存储(NAS/OSS)+ 数据库主从 |
| 重要生产站 | 至少 2 份异地备份(本地快照 + OSS 跨地域复制) |
| 测试环境 | 可直接用「快照克隆」快速重建测试机 |
❌ 常见误区
- “更换系统会自动迁移数据” → 错误!
- “只备份代码,忽略配置文件” → 可能导致服务无法启动
- “未验证备份完整性就操作” → 恢复失败风险极高
需要我为你提供:
- 自动化备份脚本模板?
- 特定 CMS(如 WordPress/DedeCMS)的迁移 checklist?
- 如何安全地迁移 MySQL 到 RDS?
请告诉我你的具体技术栈,我可定制方案。
CLOUD技术笔记