29- 系统迁移与升级(Debian 11 → 12 → 13) 🔄
前提条件 ✅
- 当前系统为 Debian 11(Bullseye)或 Debian 12(Bookworm),有 root 权限
- 所有关键服务已备份(数据库、Web 文件、配置、/etc /home /var/www /var/lib 等)
- 虚拟机环境:VMware Workstation Pro(强烈建议先做快照或完整备份)
- 网络稳定,apt 源已配置为国内高速镜像(如清华/阿里)
- 全局约定:主机名 LinuxDC,IP 192.168.1.100
详细步骤 🛠️
- 升级前全面准备与检查(所有版本通用)
# 备份关键文件
sudo tar -czf /backup/etc-$(date +%Y%m%d).tar.gz /etc
sudo rsync -avz --delete /var/www/ /backup/www-$(date +%Y%m%d)/
sudo mysqldump --all-databases -u root -p > /backup/all-databases-$(date +%Y%m%d).sql
# 检查当前版本
lsb_release -a
cat /etc/debian_version
# 更新当前系统到最新
sudo apt update && sudo apt full-upgrade -y && sudo apt autoremove -y
# 检查是否有未重启的内核更新
sudo needrestart -r l # 或 cat /var/run/reboot-required
# 清理空间
sudo apt clean
sudo journalctl --vacuum-time=30d
- Debian 11 (Bullseye) → Debian 12 (Bookworm) 升级
修改 apt 源:
sudo sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list
sudo sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list.d/*.list
推荐源模板(清华镜像):
sudo tee /etc/apt/sources.list << EOF
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
EOF
两次更新(最小化中断):
sudo apt update
sudo apt full-upgrade -y
sudo apt autoremove -y
# 第二次更新(处理依赖变化)
sudo apt update
sudo apt full-upgrade -y
sudo apt autoremove -y
重启:
sudo reboot
验证:
cat /etc/debian_version # 应显示 12.x
lsb_release -a
- Debian 12 (Bookworm) → Debian 13 (Trixie) 升级(testing 阶段,生产谨慎)
注意:截至 2026 年 1 月,Debian 13 (Trixie) 仍为 testing 分支,升级有风险,仅用于测试环境或提前准备。
修改源:
sudo sed -i 's/bookworm/trixie/g' /etc/apt/sources.list
sudo sed -i 's/bookworm/trixie/g' /etc/apt/sources.list.d/*.list
添加 non-free-firmware(Trixie 继续要求):
sudo sed -i 's/main$/main contrib non-free non-free-firmware/' /etc/apt/sources.list
升级流程同上(两次 full-upgrade + autoremove):
sudo apt update
sudo apt full-upgrade -y
sudo apt autoremove -y
sudo reboot
Trixie 常见变更点(需特别注意): - PHP 8.2 → 8.3(可能影响 WordPress/Nextcloud 等) - Python 3.11 → 3.12 - 内核 6.1 → 6.10+ - /usr-merge 完成(/bin → /usr/bin 等) - AppArmor 更严格(可能需调整策略)
-
回滚与故障恢复
-
升级前快照(VMware:右键虚拟机 → Snapshot → Take Snapshot)
- 失败时:从快照恢复,或用 live USB 挂载根分区,改回 sources.list 为 bookworm
-
常用恢复命令:
# 如果升级卡住,进入 rescue mode mount /dev/sda1 /mnt chroot /mnt apt update && apt install --reinstall linux-image-amd64 -
升级后常见清理与优化
sudo apt purge $(dpkg -l | grep '^rc' | awk '{print $2}') # 清除残留配置
sudo update-grub
sudo apt autoremove --purge
sudo systemctl daemon-reload
实践任务 🎯
- 在测试虚拟机上备份 /etc 和 /var/www,执行 Debian 11 → 12 升级全流程,验证服务正常
- 检查升级后内核版本、PHP/Python 版本是否符合预期
- 模拟失败场景:改 sources.list 为 trixie,升级失败后回滚(恢复 sources.list + apt update)
- 编写一个简单升级检查脚本:检查当前版本、可用更新、reboot-required 等
自测问题 ❓
- 为什么升级 Debian 时要先执行两次 apt full-upgrade?
- Debian 13 (Trixie) 当前是什么阶段?生产环境是否推荐直接升级?
- /etc/apt/sources.list 中 non-free-firmware 的作用是什么?
- 如果升级过程中出现依赖冲突,最快速的排查方式是什么?
总结 📌
Debian 升级路径清晰(sed 替换 codename + 双 full-upgrade),但关键在于事前备份 + 快照 + 逐步验证。
生产环境建议:蓝绿部署、Ansible 批量升级、监控告警、回滚计划。
本章掌握后,可安全完成系统演进,为后续 Git 管理、考点总结、学习计划打下坚实基础。