dd 创建一个比源文件大的文件

dd 创建一个比源文件大的文件

我用于dd创建我的文件系统的映像。我在 ARM 32 位系统上使用 Debian 8(Jessie)。

我运行的命令是:

dd if=/dev/mmcblk0 bs=1M | gzip -c > /mnt/usb/<image_name.gz>

由于某种原因,虽然我的文件系统占用了 1.3 GB,但我得到的文件是 1.9 GB,在网上搜索答案,我同意的答案是 dd 获取所有未填充的块。我如何得出这个结论我做了一些实验:我运行这些命令:

$ cat /dev/zero > /root/zero.file
$ sync
$ rm /root/zero.file

在这些命令之后,我再次检查我的系统 ( df -h),发现现在我的文件系统实际上占用了 1.9 GB。实际上 dd create 为我创建了什么。

如何使用“dd”获得尽可能接近源代码原始大小的图像文件大小。

答案1

检查您的块设备是什么。对于更简单的文件系统,它可能会呈现真实的大小,但文件系统还可以向您呈现可用于文件的虚拟“有效”空间,但原始设备本身存储的不仅仅是日志、校验和以及谁知道还有什么。设备是一个原始块,您的文件系统可以在其上执行任何操作 - 它可以执行重复数据删除、加密、压缩,在这些情况下,报告的文件系统大小是无意义的。

另外,gzip如果您正在压缩已经压缩的内容(或者如果它填充了真正的随机数据),则可能会使文件更大。但是,该开销通常会比您看到的要小。

相关内容