将0写入磁盘,但现有文件除外

时间:2015-03-03 23:55:53

标签: filesystems compression disk

我有一个ext4磁盘分区。我想" dd"它的形象。为了提高图像的压缩率,我想将0写入文件系统或GPT / MBR无法识别的所有位。这可能吗?如何?

2 个答案:

答案 0 :(得分:0)

我不认为这是达到你想要的方式。相反,您可以在以后压缩文件。更好的是,你可以缩小分区,然后dd它,并在你将它恢复到驱动器时​​调整它的大小。手动工作时,Gparted是最简单的工具。要编写脚本,请使用parted,tune2fs和e2fsck工具。

答案 1 :(得分:-1)

是的,如果你不坚持100%完美的解决方案,那也很容易:

步骤1:磁盘映像上未使用的空间

  • 在图片上运行fdisk -l以查找图片上未分配给分区的空间
  • 使用dd/dev/zero复制到这些部分
  • 在典型的图像上,这可能是如此之少,以至于跳过这一步非常合理

步骤2:文件系统旁边未使用的空间

  • 之前fdisk -l的输出为您提供了足够的信息,可以找到一个大小偏移到losetup一个循环设备到每个携带文件系统的分区
  • 对于映像中的每个文件系统,将此循环设备挂载到临时挂载点
  • 现在运行dd if=/dev/zero of=/your/mountpoint/zero.fill bs=1M oflag=sync直到它停止,“设备上没有剩余空间”。您可以删除没有稀疏文件的文件系统的oflag=sync
  • 执行rm -f /your/mountpoint/zero.fill删除此文件

这将为您留下一张已归零的图像

  • 大部分分区未使用的空间
  • 大部分分配给文件系统的空间,但未使用