【问题标题】:write 0 to disk except existing files除现有文件外,将 0 写入磁盘
【发布时间】:2015-05-04 20:14:51
【问题描述】:

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

【问题讨论】:

  • 这究竟是一个编程问题吗?询问Super User

标签: filesystems compression disk


【解决方案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 删除此文件

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2012-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多