如何进行系统还原?

如何进行系统还原?

我面临的问题

  • 我安装了一些东西,导致我之前编译的 Wifi 驱动程序崩溃。
  • 卸载相同的包没有帮助。
  • 最后,我重新编译了我的 wifi 驱动程序,一切正常。

我的问题

但是,Ubuntu/LinuxMint 中是否有类似系统还原或系统回滚的功能?

  • 有什么东西可以发出undo命令apt-get install package吗?

答案1

有一个 Linux 软件叫时间移位正是出于这个目的。使用 Timeshift,您可以定期拍摄 Linux 系统的快照,并在需要时恢复它们。

该软件将 Windows 的系统还原功能带到您的 Linux 发行版。

其官方网站的简短描述:

TimeShift for Linux 是一款提供与 Windows 中的系统还原功能和 Mac OS 中的 Time Machine 工具类似的功能的应用程序。TimeShift 通过定期拍摄文件系统的增量快照来保护您的系统。这些快照可以稍后恢复,以使您的系统恢复到拍摄快照时的确切状态。

快照使用 rsync 和硬链接进行拍摄。快照之间共享常用文件,从而节省磁盘空间。每个快照都是完整的系统备份,可以使用文件管理器浏览。

答案2

实际上,Ubuntu 等系统中只有少数东西可以让你回滚更改。简要如下:

  1. /var/backups/dpkg.status.*:此目录保存了安装前最后系统状态的一组日志,如下所示;/var/backups/dpkg.status.0是最新日志事先的状态改变(例如包安装/删除/更新...等);/var/backups/dpkg.status.?.gz在不同时间点压缩、存档日志版本,每月轮换一次。
  2. /var/lib/dpkg/status:这是已安装软件包的当前状态。手动备份它,或提供 logrotate 脚本/etc/logrotate.d将确保按您的喜好安排系统状态的快照。
  3. 回滚:基石是您以前的状态/var/backups/dpkg.status.0。以下是恢复以前软件包状态的简要步骤(注意简短的并非详尽无遗)。

    a. cp /var/backups/dpkg.status /var/lib/dpkg/status(将包状态恢复至上一个版本)。

    b. dpkg -l | grep ii(将为您提供以下列表据称/var/lib/dpkg/status根据上述步骤 a. 中获得的回滚文件安装的软件包)。

    c. dpkg -l | grep ii | awk '{print "apt-get --reinstall -y install", $2}' > /tmp/reinstall && sh /tmp/reinstall(将创建一个简单的单行 shell 脚本并运行该脚本来重新安装在 apt-get 操作之前已在系统上的软件包)

    d. apt-get --reinstall install ucf(将负责清理 /etc 配置文件等)

    e. 必要时重复步骤 c。


只要有一点点运气,你就应该没事。

答案3

的补码apt-get install packageapt-get remove package。要删除所有相关设置,您需要运行apt-get purge package

请注意,这些命令依赖于软件包提供的卸载脚本。据我所知,主存储库中的所有软件包都可以很好地完成卸载工作。第三方软件包可能并非如此。

至于您的驱动程序问题,安装软件包导致无线驱动程序损坏的可能性有以下几种:

  • 驱动程序有一个安装后挂钩,当满足条件时执行,例如内核更新
  • 该软件包覆盖了无线驱动程序所依赖的文件
  • 有问题的软件包是内核更新,但驱动程序没有用于重新编译驱动程序的安装后挂钩(最有可能)

至于“系统回滚”/“系统还原”功能,最接近的功能是使用类似软件的系统映像克隆兹拉。不幸的是,这无法在正在运行的系统中完成,必须从 Live CD 中执行。

答案4

btrfs 具有/将具有一些出色的快照功能,应该能够处理此类事情。只需将您的数据保存在一个文件系统中,将系统保存在另一个文件系统中,然后使用定期(每日?每周?)快照,然后在出现问题时回滚。

相关内容