Ubuntu 20.04.2 LTS生产环境批量回滚系统升级的可行方案咨询
Ubuntu 20.04.2 LTS生产环境批量回滚系统升级的可行方案咨询
嗨,针对你在Ubuntu 20.04.2 LTS生产环境里想要批量回滚系统补丁升级的需求,我来给你梳理几个实用的方案——毕竟生产环境容不得试错,咱们得找最稳妥的路子:
1. 借助APT/Dpkg日志批量回滚(官方原生方式)
Ubuntu没有像CentOS yum history undo那样的官方一键回滚命令,但可以通过操作日志来批量处理升级的包:
- 先定位最近的升级记录:查看
/var/log/apt/history.log,找到你执行升级操作的Start-Date,比如:
里面的cat /var/log/apt/history.log | grep -B 5 -A 15 "Start-Date: 2023-XX-XX XX:XX:XX"Upgrade:行就是本次升级的所有包列表。 - 提取要回滚的包:用命令把这些包提取到一个文件里,方便批量操作:
cat /var/log/apt/history.log | grep -A 1 "Upgrade:" | tail -n 1 | tr ',' '\n' | awk '{print $1}' > rollback_pkgs.txt - 批量降级包:接下来需要给每个包指定升级前的版本号,你可以从
/var/log/dpkg.log里找旧版本(比如搜索包名+upgrade关键字),或者用apt-cache policy <包名>查看可用的旧版本,然后执行:
要是最近刚升级,旧版本大概率还在本地缓存里,不用额外下载。sudo apt install $(cat rollback_pkgs.txt)=<对应旧版本号>
2. 使用第三方apt-history工具模拟Yum式回滚
社区有个apt-history脚本,能实现类似yum history的功能,一键回滚整个操作记录:
- 你可以自己创建这个脚本(或者用社区维护的版本),它会解析APT的日志,生成操作历史列表。比如运行
apt-history list就能看到所有APT操作的ID和详情; - 找到你要回滚的操作ID后,执行
apt-history undo <操作ID>,它会自动生成降级命令帮你批量处理。
注意:这个工具不是官方出品,生产环境用之前一定要在测试机完全验证,避免兼容性问题。
3. 系统快照恢复(最稳妥的方式)
如果你的生产环境之前配置了快照工具(比如Ubuntu常用的timeshift),那直接恢复到升级前的系统快照是最省心的——它会把整个系统(包括内核、所有包配置、系统状态)还原到升级前的样子,不用手动处理任何包。
- 要是之前没配置快照,建议这次回滚后立刻部署,这是生产环境应对系统变更的重要备份手段。
生产环境操作必看提醒
- 先测后上:所有回滚操作一定要先在和生产环境完全一致的测试机上验证,确认没有依赖冲突、服务异常再操作;
- 备份数据:虽然包回滚一般不影响业务数据,但操作前最好备份重要配置和数据,以防万一;
- 内核回滚注意:你的当前内核是
5.4.0-124-generic,如果这次升级包含内核,回滚后要修改GRUB默认启动项,确保系统启动旧内核,必要时可以删除新内核包。
备注:内容来源于stack exchange,提问作者sai




