You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动