注意:所有=我find的所有
所有的“用dd复制”的信息都是关于dd如何复制所有的“空白空间”,但是从字面上看,所有的文字似乎都是对文件系统填满整个磁盘的情况作出的反应。
那么我有两个分区一起填满160G磁盘的10%的情况呢? 什么是图像大小将是好的醇“dd if = / dev / sda of = disk.img”运行:16G或160G?
除非我是盲人,否则使用DD进行磁盘克隆并不具备这些信息。
sda是整个磁盘 – 160 GB
sda1是该磁盘上的第一个分区 – 8 GB(说)
sda2是该磁盘上的第二个分区 – 8 GB(说)
如果您只想克隆16 GB的文件系统数据,请在sda1和sda2上使用dd 。
要将数据恢复到不同的磁盘,您必须首先对该磁盘进行分区(理想情况下与原始磁盘相同)。 我希望你可能不得不重新安装bootloader。
例如,请参阅http://www.backuphowto.info/linux-backup-hard-disk-clone-dd
首先,我想回答你的问题:
那么我有两个分区一起填满160G磁盘的10%的情况呢? 什么是图像大小将是好的醇“dd if = / dev / sda of = disk.img”运行:16G或160G?
如果你在/ dev / sda上运行dd,也就是160G的磁盘sda,那么disk.img将会是160G,因为dd只会将sda上的所有位逐一复制。 如果/ dev / sda1和/ dev / sda2之后的空间是分区的,则没有区别! 不幸的是,如果硬盘之前已经充满了数据,即使你试图压缩disk.img,也不会真的变小,因为现实中磁盘表面上的“空白空间”并不是空的,而是包含以前使用的文件系统和数据的剩余位。 我不知道以前从未使用过的全新硬盘的情况是怎样的!
除此之外,我想回答你给RedGrittyBrick的回答的评论。 如果您的目标是制作最小尺寸的全盘映像,那么可能的解决scheme如下
在你的例子中用空的空间创build第三个分区:/ dev / sda3。 使用文件系统格式化文件系统是没有必要的(也是无害的),因为分区在下一步将被覆盖为零,消除了任何文件系统的格式化
现在用零填充整个分区: dd if=/dev/zero of=/dev/sda3 。 这将需要很长时间,dd没有进度条,所以请耐心等待。 在某个时间点,dd会报告磁盘已满,之后的一段时间会退出,并显示关于复制位的最终报告
如果你不想让这个分区存在,你可以再次删除它。 零将保持在磁盘表面!
现在,制作单个磁盘映像作为您在第一个地方的计划: dd if=/dev/sda of=disk.img 。 顺便说一下:在许多其他论坛中,不需要任何进一步的dd参数,如conv=notrunc等。 notrunc与我们在这里要做的事完全没有任何关系 (克隆一个磁盘到一个文件),并用于完全不同的东西(简而言之:将数据插入已存在的文件中,而不切断[=截断]如果新添加的数据比现有的文件短,那么现有的文件将会被删除)。 不要听那些把磁盘克隆到一个文件时特别需要 notrunc的人,那就是100%bollocks
disk.img将再次达到160GB,在这里也不足为奇。 但是现在和以前不同的是,如果你压缩disk.img,这次它将几乎和/ dev / sda1和/ dev / sda2的压缩图像的总和一样大小,因为剩余未分区的磁盘表面将压缩到几乎没有!
现在你已经拥有了整个磁盘的单个文件的完整磁盘映像,但它几乎只是/ dev / sda1和/ dev / sda2的真正使用的数据区的大小
在你还没有创build/ dev / sda1和/ dev / sda2的情况下,你也可以直接用dd将零写入整个磁盘/ dev / sda,或者使用磁盘擦除工具将零写入整个磁盘等,然后创build/ dev / sda1和/ dev / sda2。 结果应该是一样的
HTH! 最好的问候行星地球上的本地匿名互联网