Filesystems 将0写入磁盘(现有文件除外)

Filesystems 将0写入磁盘(现有文件除外),filesystems,compression,disk,Filesystems,Compression,Disk,我有一个ext4磁盘分区。我想“添加”它的一个图像。为了提高映像的压缩比,我想将0写入文件系统或GPT/MBR无法识别的所有位。这可能吗?如何可能?如果你不坚持100%完美的解决方案,这也很容易: 步骤1:磁盘映像上未使用的空间 对映像运行fdisk-l,查找映像上未分配给分区的空间 使用dd将/dev/zero复制到这些部分 在典型的图像上,这可能很少,因此跳过这一步非常合理 步骤2:文件系统中未使用的空间 以前的fdisk-l的输出为您提供了足够的信息,可以找到到losetup的偏移量

我有一个ext4磁盘分区。我想“添加”它的一个图像。为了提高映像的压缩比,我想将0写入文件系统或GPT/MBR无法识别的所有位。这可能吗?如何可能?如果你不坚持100%完美的解决方案,这也很容易:

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

  • 对映像运行
    fdisk-l
    ,查找映像上未分配给分区的空间
  • 使用
    dd
    /dev/zero
    复制到这些部分
  • 在典型的图像上,这可能很少,因此跳过这一步非常合理
步骤2:文件系统中未使用的空间

  • 以前的
    fdisk-l
    的输出为您提供了足够的信息,可以找到到
    losetup
    的偏移量大小,以及到每个承载文件系统的分区的循环设备
  • 对于映像中的每个文件系统,将此循环设备装载到临时装载点
  • 现在运行
    ddif=/dev/zero of=/your/mountpoint/zero.fill bs=1M oflag=sync
    ,直到它在“设备上没有剩余空间”的情况下停止。对于没有稀疏文件的文件系统,可以删除
    oflag=sync
  • 执行
    rm-f/your/mountpoint/zero。填充
    以删除此文件
这将给您留下一个图像,该图像已归零

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

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

这到底是一个编程问题吗?询问