将 0 写入磁盘,现有文件除外
write 0 to disk except existing files
我有一个 ext4 磁盘分区。我想要 "dd" 它的图像。为了提高图像的压缩率,我想将 0 写入文件系统或 GPT/MBR 无法识别的所有位。这可能吗?如何实现?
是的,如果你不坚持100%完美的解决方案,也很容易:
第 1 步:磁盘映像上未使用 space
- 运行
fdisk -l
on the image 查找关于space on the image,即未分配给分区
- 使用
dd
从/dev/zero
复制到这些部分
- 在典型的图像上,这可能太少了,跳过这一步是很合理的
第 2 步:文件系统中未使用 space
- 之前
fdisk -l
的输出为您提供了足够的信息来找到 losetup
一个循环设备到每个承载文件系统的分区的大小偏移量
- 对于映像中的每个文件系统,将此循环设备挂载到临时挂载点
- 现在 运行
dd if=/dev/zero of=/your/mountpoint/zero.fill bs=1M oflag=sync
直到 "no space left on device" 停止。对于没有稀疏文件的文件系统,您可以删除 oflag=sync
。
- 执行
rm -f /your/mountpoint/zero.fill
删除此文件
这将为您留下一张已归零的图像
- 大部分 space 一个分区没有使用
- 大部分 space 分配给一个文件系统,但没有使用
我认为这不是实现您想要的方法。相反,您可以随后压缩文件。更好的是,您可以缩小分区,然后将其添加,并在将其添加回驱动器时调整其大小。 Gparted 是最简单的工具,在编写 manually.To 脚本时,使用 parted、tune2fs 和 e2fsck 工具。
我有一个 ext4 磁盘分区。我想要 "dd" 它的图像。为了提高图像的压缩率,我想将 0 写入文件系统或 GPT/MBR 无法识别的所有位。这可能吗?如何实现?
是的,如果你不坚持100%完美的解决方案,也很容易:
第 1 步:磁盘映像上未使用 space
- 运行
fdisk -l
on the image 查找关于space on the image,即未分配给分区 - 使用
dd
从/dev/zero
复制到这些部分 - 在典型的图像上,这可能太少了,跳过这一步是很合理的
第 2 步:文件系统中未使用 space
- 之前
fdisk -l
的输出为您提供了足够的信息来找到losetup
一个循环设备到每个承载文件系统的分区的大小偏移量 - 对于映像中的每个文件系统,将此循环设备挂载到临时挂载点
- 现在 运行
dd if=/dev/zero of=/your/mountpoint/zero.fill bs=1M oflag=sync
直到 "no space left on device" 停止。对于没有稀疏文件的文件系统,您可以删除oflag=sync
。 - 执行
rm -f /your/mountpoint/zero.fill
删除此文件
这将为您留下一张已归零的图像
- 大部分 space 一个分区没有使用
- 大部分 space 分配给一个文件系统,但没有使用
我认为这不是实现您想要的方法。相反,您可以随后压缩文件。更好的是,您可以缩小分区,然后将其添加,并在将其添加回驱动器时调整其大小。 Gparted 是最简单的工具,在编写 manually.To 脚本时,使用 parted、tune2fs 和 e2fsck 工具。