今天是我的笔记本电脑第二次在进行系统更新后一整天都无法使用。问题仍然没有解决,但我不想关注这个问题,因为几年前我的台式机也曾遭遇过系统破坏性更新,另一台笔记本电脑也因此失去无线互联网。
我的问题是,我能做些什么来尽快从恶意更新中恢复?我实在负担不起整天寻找神秘的错误,我只想让事情恢复到更新之前的样子。
据我所知,Ubuntu 没有任何像 Windows 那样的“系统恢复”概念,但我想模仿类似的东西。我知道您可以将单个软件包恢复到以前的版本,但据说这与更新前的软件包不同。它还需要检查许多软件包。
不管怎样,我正在运行 Ubuntu 14.04 LTS,采用默认更新设置,没有任何实验性软件包或任何东西。
为了更好地了解我所寻找的内容,以下是经过头脑风暴后得出的一些想法:
- 以某种方式创建更新前操作系统状态的快照,类似于虚拟机使用的快照。然后能够恢复到该快照。不知道这是否可行。
- 创建一个脚本来自动获取上次更新的更新包,然后自动恢复所有更新包。
- 在机器上安装两个 Ubuntu,尽可能创建备份,如果主 Ubuntu 出现故障,则切换到备份。缺点是必须安装/配置软件两次,开销很大。
我非常沮丧,因为这占用了太多时间,请帮助我避免将来再发生这种情况。
答案1
我从未使用过 lvm。听起来真的很棒。除非有类似的东西或像 xfs 或 btrfs 这样的文件系统,否则请尝试以下操作。
请记住,我的经验是关于桌面系统,涉及服务器的事情可能会有点不同。
虽然不太美观,但您可以随时启动实时 CD,并使用 partimage、dump 甚至 tar 或 rsync 等工具将整个根分区和主分区复制到另一个分区,最好是另一个驱动器,但您必须这样做前您运行更新或其他任何中断。
请注意使用实时 CD(或从另一个分区运行的另一个 Linux 等),因为 root 和 home 通常会在实时系统上一直更新,并且您希望在同一时刻冻结所有文件的副本,以便它们彼此一致。
如果您知道哪些东西不会改变或不重要,并将它们从备份中排除,则可以对此进行一些优化 - 例如缓存、/tmp(大多数情况下),尤其是 .thumbnails。(如果您逐个文件地进行操作 - 比如使用 rsync 或 tar,请跳过 /sys 和 /proc,因为它们不是“真正的”文件系统。在大多数情况下,您还可以跳过每个分区上的 lost+found。在 /home 上,在这种情况下,最重要的是配置文件 - 通常在以 $HOME/.rest of path 开头的隐藏目录树中(除非您告诉它们查找类似的文件/目录,否则 . 会使目录对大多数命令和程序不可见。)
由于大多数更新不会扰乱您的系统,因此您不需要在每次更新之前进行这样的完整备份。只需确保您的备份足够新,可以正常运行,并且您当前的数据文件要么位于其自己的分区上(安全无虞),要么备份得更完整。
如果您选择完整备份,则可以使用 rsync 之类的工具及其基础上构建的工具,它们使用硬链接根据原始备份进行后续完整备份,但本质上仅占用自原始或上次备份以来实际更改了内容的文件的额外空间。
如上所述,将 /home 存储在其自己的单独分区上几乎总是一个好主意。这主要可以避免升级问题,例如必须从备份中恢复 /。只需处理配置文件和任何文件格式或新内容更改。(Firefox 和 Thunderbird 等程序似乎非常频繁地更改几乎所有文件。)
我没有看到其他人谈论它,但是我对一个新系统进行了分区,该系统有两个根目录和两个主目录(实时和备份对,每对约 30GB),交换,剩下的一切都进入一个大数据分区 - 它几乎不受更新问题的影响,只要我停止任何可能正在写入它的应用程序,就可以在我的实时系统上随时完全备份和恢复。
如果您以这种方式进行备份,您(几乎)只需切换到备份(在启动菜单中,例如 grub)并重新开始运行而无需执行任何其他操作。(您必须将备份根分区中 /home 的 fstab 条目指向 /home 备份所在的分区。)
这也为您提供了立即切换到备份的选项,以便您可以继续完成工作 - 可能可以选择保留损坏的版本,以便在时间允许时查看是否可以诊断或修复它们。