我希望使用嵌入式 Linux 发行版(例如 Tiny Core)作为自动恢复类型工具。
基本上,用户会选择从启动菜单启动到 Tiny Core,然后如果插入包含驱动器幽灵类型映像的 USB(它将包含 udev 规则将检测到的唯一 UUID,只有这样它才会开始映像) ),它将恢复整个硬盘驱动器。现在我的问题是找到一个像 Ghost for Linux 这样的实用程序来进行成像。
Ghost 最好的部分是
- 它进行逐个文件的复制,因此速度非常快,并且生成的压缩图像很小,并且
- 它会动态调整驱动器大小,因此如果您将 10 GB 驱动器映像到 20 GB 驱动器,它将映像驱动器,然后自动调整其大小,并在必要时修复分区表。
dd
由于这个原因显然不是一个选择,它复制驱动器的每个扇区,并且不具备动态调整大小的能力,因此如果由于某种原因目标驱动器甚至比源驱动器小 1 个字节,它就会失败。partimage
有类似的问题。
CloneZilla 是我所见过的唯一一个功能强大到足以执行此类操作的 Linux 工具,但它显然是它自己的发行版,无法集成到 Linux 发行版中。由于 CloneZilla 只是一个低级工具的集合,所以有人知道它实际上是如何克隆硬盘的吗?
做这样的事情最好的方法是什么?多年来我一直在寻找这个问题的答案,但仍然没有找到可靠的解决方案。直到今天,我们仍然使用 Ghost 的古老版本,因为它可以完美地生成我们需要的任何图像,但我们希望摆脱专有工具和 DOS,转向开源解决方案。
答案1
FSArchiver(http://www.fsarchiver.org/Main_Page)可能会做你正在寻找的事情。磁盘映像仅包含数据,不包含可用空间,并且可以恢复到不同大小的磁盘。
答案2
虽然这可能并不完全满足您的需求,但它确实比 dd 能满足更多需求。
该程序是ddrescue
,并且是一个 GNU 实用程序。在大多数系统上,该包的名称为gddrescue
,但在 Gentoo 上,它只是简单地命名为ddrescue
。它具有错误控制功能——如果遇到错误,它会继续运行,但您也可以让它在 X 个错误或 X 个错误率(使用 -e 和 -E 标志)后停止。您可以使用 -S 标志将图像与稀疏文件一起存储,这将仅分配元数据的可用空间;基本上,图像中的可用空间将占用可以忽略不计的空间,尽管文件本身会在您这样做时报告正确的大小ls -hs
。您可以将其写入日志文件,这是推荐的。
不幸的是,它不能动态调整大小;也就是说,它不能增大或缩小来填充驱动器。但它只做一件事,而且做得很好。对于调整大小,我建议使用 恢复图像ddrescue
,然后使用 调整驱动器大小GParted
(parted
如果您觉得舒服,也可以使用 调整大小)。
欲了解更多信息,我建议阅读地址救援主页以及 的手册页ddrescue
。
答案3
怎么能忽视传统DD命令 ??
请参阅它的手册页,克隆任何 Linux 或 Windows 机器。
答案4
CloneZilla 是我所见过的唯一一个功能强大到足以执行此类操作的 Linux 工具,但它显然是它自己的发行版,无法集成到 Linux 发行版中。
Clonezilla 人员鼓励您以 LiveCD 或 NetBoot 系统的形式使用它,但 Clonezilla 可以作为 Debian 软件包提供,我已经在常规 Debian 系统上成功安装并使用了它。我认为您要运行的程序是“ocs-sr”。
由于 CloneZilla 只是一个低级工具的集合,所以有人知道它实际上是如何克隆硬盘的吗?
从根本上来说,克隆驱动器的过程可以分为以下几个部分。
- 如果需要,克隆分区表并调整驱动器大小。
- 克隆分区外部的任何启动代码
- 克隆分区的内容,如果需要,再次调整驱动器大小。
- 进行所需的任何其他调整,以便系统可以启动。
棘手的部分是,每个步骤的详细信息取决于驱动器上到底有什么,因为 Clonezilla 所做的事情是它内置的较低级别工具无法分析驱动器并计算出哪些步骤的能力需要克隆它。
要克隆实际分区数据 IIRC clonezilla 可以使用“partclone”、“partimage”或“dd”,我不确定现在哪个是默认值。不幸的是,这些工具都不能缩小分区,因此,如果您的分区不适合目标驱动器,那么您就不走运了。