使用`dd`命令创建的驱动器映像的GZip

我昨天使用GZip创建了一个驱动器映像。

我打开了名为ssd.img.gz的51.3 GiB文件,看到一个包含3.9 GiB包的图标,是的,那就是大小为9千兆字节,并且图像名称为ssd.img

这对我来说似乎不对,图像创作是否有效?

是的,驱动器上有数据和操作系统。

我应该用cat吗? 只有我这样做,并继续说它无关。

会使用| zip | zip而不是更好的选择?

** 编辑 **

使用的命令是:

 mark@zotac:~$ sudo -l Enter password: root@zotac:~# dd if=/dev/sda | gzip -c > "/media/mark/Seagate External Drive/ssd.img.gz 

终端花费了10小时的最佳时间来构建图像,这也是我发现怀疑的东西,为什么在将文件复制到我想要的文件夹时进行记录,有些40GiB需要45分钟……

源驱动器/dev/sda没有安装分区。

** 编辑 **

只是为了澄清一下,我试图制作一个驱动器映像,以便稍后如果修复出错,驱动器本身需要是驱动器上的文件,因为目标驱动器分区几乎使用了所有驱动器,如果不对其进行格式化,则无法在其上调整分区大小,我不会丢失1.4TB的数据。

所以dd if=/dev/sda of=/dd if=/dev/sda of=/不是我需要的,我需要的是驱动器的图像,如果修复出错,我可以将图像恢复到驱动器。

那么我使用什么命令,dd还是cat? 为什么| zip | zip继续告诉我,当与cat一起使用时它没有任何关系,但dd没有错误或警告

如果磁盘几乎已满,则压缩图像没有任何意义; 这需要很长时间,没有实际效果。 恢复也会慢得多。

dd复制物理,逐字节分区或磁盘。 它的工作原理是从输入读取N个字节并将它们写入输出,然后重复。 N默认为512 字节

要物理复制磁盘/分区,请使用

 dd bs=10M if=/dev/sda of=/path/to/dest/image.img 

这将一次读取10 MB的块。 如果你有足够的内存,你也可以增加这个数字。 文件的大小将与使用的磁盘/分区的大小完全相同(但有时可以占用较少的磁盘— dd可以创建稀疏文件)。

您可以使用查看另一个终端的进度

 ls -lh /path/to/dest/image.img 

这将给你图像文件的大小(或多或少—它将是块,真的)。

三重检查(带mount ),任何地方都没有安装或使用要复制的磁盘分区,或者创建的映像无效(也可能发生最坏的情况)。 交换区域也要小心。

您可以安装映像以检查是否可以使用环回文件系统和一些技巧 。

无论如何,还有一些工具可以帮助完成任务: 如何制作磁盘映像并在以后从中恢复?

如果你的系统不是最近的(你引导的系统,我的意思是),请注意这个错误—从14.04开始修复,但仍然存在较旧的内核 。

使用Gzip压缩整个驱动器或分区的映像可能会导致文件大小的大幅减少,但仅在没有未使用的数据残余存储的情况下,并且未使用的空间被均匀填充,例如由零填充

这可能是一个非常新的几乎不使用的驱动器,或者我们手动用零填充未使用空间的驱动器(例如使用实用程序zerofree) 安装zerofree )。

  • 然而对于旧的已使用的驱动器而言, 情况并非如此 ,其中数据残余将随机分散在整个驱动器上,对于安全擦除已用随机数填充未使用空间的驱动器,或者在虚拟磁盘加密之后。 在这些情况下,Gzip将无法压缩这么多或根本不压缩(随机数不能被压缩)。

  • 在写入模式使用的SSD也不是这种情况一段时间,因为在每次写入时,所有存储器块将通过驱动器的固件均匀地分布在整个驱动器上,以避免损耗均衡。 然后,图像的任何压缩也将压缩那些随时间变得越来越随机的数据残余。

所以,在你的情况下,一个50 GiB SSD的3.9 GiB压缩图像可能是一个相当新的,几乎不使用的驱动器或主要用于读取但不用于写入的驱动器。 但那时它是一个明智的价值。

要确定我们需要解压缩图像以将其内容与源进行比较。

Interesting Posts