dd 备份和恢复完整系统

dd 备份和恢复完整系统

我使用装有 Mint Linux 的笔记本,接下来几天我将使用 Windows。所以我想“保存”我的操作系统,然后将其放回同一驱动器上。

它使用全盘加密(Mint 安装时默认的加密)。

使用 Linux 启动 Live CD,然后使用以下内容创建副本:

dd if=/dev/sda of=/media/externalhd/mint.img

[这里我格式化并添加窗口],在我再次使用 Live CD 启动并执行以下操作后:

dd if=/media/externalhd/mint.img of=/dev/sda

应该有用吧?

答案1

您的命令很好,正如已经指出的那样,这也将节省驱动器上的所有空白空间。但是,如果您在安装系统时选择安全擦除选项,则驱动器的空白空间将充满随机噪音,因此压缩输出对您来说几乎没有什么好处。

您应该为副本使用更大的块大小,并避免污染系统缓冲区高速缓存,以使原始读取速度更快。

  • dd 选项 iflag=direct 或 oflag=direct 绕过 Linux 的缓存层直接从设备读取。
  • dd 选项 bs(块大小)告诉 dd 一次要读取或写入多少数据,现代磁盘驱动器在处理更大的数据块时工作速度要快得多。

压缩是 CPU 密集型的,而 gzip 仅使用单个核心,这意味着这可能是复制速度的限制因素。使用使用所有 CPU 核心的 Pigz 会使其速度更快,但仍然可能受到 CPU 限制。

作为一个配备现代 CPU 的粗糙球场,如果存储空间有问题或者您通过比 USB2 慢的设备连接,我会使用压缩。 USB3、SATA 或 100Mbit+ 网络几乎肯定会比 gzip 更快,因此不会获得任何速度,但可能会节省一些空间。

在存储连接速度慢(即 10Mbit 以太网或 USB1/2)或空间不足的情况下我会使用的命令是:

dd if=/dev/sda bs=1M iflag=direct | pigz -c > /media/external/image.sda.gz

如果您具有与存储的快速连接并且所使用的空间不是问题,我将使用以下命令:

dd if=/dev/sda of=/media/external/image.sda.raw oflag=direct iflag=direct bs=1M

答案2

它有效,但不是最好的方法。由于原始数据的零,图像会很大。如果你想避免这种行为,你可以这样做:

  dd if=/dev/sda | gzip > /media/externalhd/backup.img.gz

Gzip 知道图像上不需要考虑零,而只是计算,因此图像会更小,特别是如果磁盘上有一些可用空间,加上 gzip 压缩,所以效果会好很多。

相关内容