在Linux(Debian / Ubuntu)中有像Windows一样的“还原点”吗?


17

我正在直接在Ubuntu虚拟机(VM)中工作。更新管理器提供了一些更新(如内核)。

如果我没有使用VM,我不会更新它,因为它有破坏某些东西的风险。由于它是VM,因此您可以创建快照或导出设备,并在出现问题时进行恢复。

假设我没有使用安装了Debian / Ubuntu的VM。是否存在不依赖于VM配置的安装 - 恢复方法,以便在升级之前准确还原系统(如Windows中的“还原点”),可以像VM设备一样轻松还原?

(我不是在寻找“幽灵图像”或类似东西(Norton Ghost,Clonezilla等),我正在寻找Linux系统内置的东西)


3
我知道这是偏离主题的,所以我将其添加为注释,但OpenSolaris可以创建整个ZFS文件系统的快照并在以后恢复它。由于重复数据删除,它也不会占用太多磁盘空间。实际上,进行主要升级的标准方法是创建新的FS快照并在其上安装升级。如果ti有效,您可以删除旧的。如果没有,你可以回到正常工作的那个。
AndrejaKo 2010年

3
@AndrejaKo:+ 1但是,它是一个“克隆”(可写快照;普通快照是只读的),而且它不需要太多空间这一事实与重复数据删除无关,但与快照和克隆的处理方式有关在COW文件系统中。也就是说,你也可以在非重复数据删除池上节省相同的磁盘空间。
knweiss 2010年

@ knweiss是的,没错。我只是查了一下!
AndrejaKo 2010年

Answers:


15

我所知道的任何Linux发行版都没有内置类似的功能。有几个原因可以解释为什么它不如Windows有用。

  • 首先,Linux发行版比微软要严重得多,因为稳定版本只是为了修复重要的错误并且变化最小。例如,使用Ubuntu和Debian,您可以选择仅接收安全更新(-security),或仅接收安全更新和重要的错误修复(-updates)。

  • 内核升级是最危险的,因为看似有益的更改可能会导致特定硬件配置出现问题。这就是为什么大多数发行版允许同时安装多个内核版本的原因; 例如,在我写这篇文章时,Ubuntu 10.04有三个可用的内核版本:2.6.32.21.22从原始版本开始,2.6.32.22.23带有安全更新,以及2.6.32.23.24非安全更新。如果... 24版本导致您的计算机出现问题,您可以在... 23下重新启动(甚至将... 24标记为禁止安装,至少如果您使用的是aptitude)。

  • 没有注册表:所有配置数据都在文件中(在/etc层次结构中),如果出现问题,可以轻松地单独恢复。即便如此,稳定版本的更新很少会影响文件/etc

  • 如果您从稳定版本以外的某些来源安装软件包,那么您可能希望保留旧版软件包的副本,并保留配置文件的备份。以下是Debian和Ubuntu中的一些提示。

    • 下载的包保存在/var/cache/apt/archives。如果您有磁盘空间,则在确认较新版本适合您之前,不要删除旧的包文件。
    • 许多来源保留旧版本,因此您可以轻松降级(通过手动下载和安装旧版本,或使用apt首选项)。对于Debian,请查看snapshot.debian.org
    • 有一种非常简单的方法可以设置版本控制/etc:安装etckeeper包并使用命令激活它etckeeper init。(我这样做,但不是因为我担心升级会破坏某些东西,而是因为我担心我的改变会破坏某些东西。)

是的,Windows和Debian / stable的稳定性之间根本没有比较。即使出现问题(几乎总是由于明显的用户错误),也有很多工具可以调试和修复问题。
liori 2010年

2
“内核升级是风险最高的” - 这就是为什么我在我的电脑旁边保留一份Knoppix。图5和6,不
amphetamachine

您可能还会找到有用的[rsnapshot](rsnapshot.org),这是一个基于rsync的文件系统快照实用程序。
Pablo Bianchi

5

这是不需要的,因为包管理器负责处理来自哪个包的文件,并且还能够回滚包更新或安装。


2
但是如果软件包在重启过程中出现问题,那么执行回滚可能会变得很困难(特别是与内核修订有关)
warren 2010年

1
这就是为什么通常保留以前的内核并且可以选择在grub中引导。
mbq 2010年

1
我不同意。通过简单的重启,能够在OS更新x和更新x + 1之间切换(差异可能不仅仅包括内核包)非常有用。这可以通过OpenSolaris实现。
knweiss 2010年

除了寻找稳定的驱动程序之外,Solaris一切皆有可能;-)
mbq 2010年

5

您可以尝试使用像etckeeper这样的工具。此工具只是将系统范​​围的配置文件保存在版本控制存储库中,并使其易于回滚并再次应用任何更改。

但是,说实话,我从来不需要回滚来自debian / stable系统更新的任何变化。我用它来修复我手动修复的错误。


我使用etckeeper,但实际上发现查看更改的时间轴比回滚更有用(当然你获得了两种能力)。使用后端(例如hg,git,bzr等)内置的网络服务器通常是最简单的:sudo hg serve -R /etc

3

TMK,Windows还原功能仅反转对注册表和一些关键目录的更改。Linux没有这个。

您可以尝试使用手动方法进行备份。只需从Synaptic备份您的主目录和程序列表,并将其用作还原点。


3

请注意,特别是Ubuntu(但可能也是Debian)在安装更新时不会删除旧的内核包,您可以配置引导加载程序以显示引导时要选择的内核列表。

这会自动创建“还原点” - 仅适用于内核 - 因为如果较新版本导致问题,您可以选择以前的版本。据我所知,Windows的内核更新没有这样的东西。(特别是对于家庭用户,我不想通过内核更新来帮助诊断和修复无法启动的系统。)



2

如果使用逻辑卷管理器来管理硬盘的内容,则可以使用快照在某种程度上免费获取此内容。引用伟大的HOWTO“一个例子是快照卷,安装快照,并尝试更改该卷上的文件的实验程序。如果你不喜欢它,你可以卸载快照,删除它,并将原始文件系统安装到位。“


我要注意,Ubuntu 12.04+上建议的磁盘分区使用LVM,所以这是最好的建议。
kevinf 2015年

1

根据您的VM技术,您可以停止/暂停/暂停VM,转储核心并复制VM的映像。如果失败,只需恢复原始。

如果您直接使用逻辑卷,则可以基于原始LV创建LVM快照。测试升级,如果有效,则在原VM上重做(参见lvcreate(8)-s)

或使用金老焦油(1)。您可以创建用户空间的完整tar球,恢复文件并删除原始tar球中没有的文件。


问题是:“是否存在不依赖于VM配置的安装 - 恢复方法”?
Ben Voigt

1

现在Linux并没有提供这样的功能,尽管它非常有用。

但是,文章Unbreakable升级,ZFS和Apt描述了基于Linux的Nexenta存储分发的apt-clone功能,并建议......

还有一个新的文件系统部分地作为对ZFS的响应而创建,称为BTRFS,它具有ZFS的许多优点,并且可能能够为未来的普通Linux发行版(如Ubuntu)启用“不可破解的升级”。

恕我直言,我们首先需要一个可用的Linux 拷贝写入(COW)文件系统,然后才能以理智的方式在系统安装程序/更新程序中实现这一功能。

注意:虽然Nexenta是基于Linux的,但它不使用Linux内核。它使用OpenSolaris内核和ZFS。


我并不是故意挑选你的尼特,但没有Linux内核的Linux-Based有点像矛盾。
Seamus Connor 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.