我试图用驱动器映像节省磁盘空间,但我能找到的所有示例都涉及用零填充空白空间并压缩生成的图像。并非所有程序都可以使用压缩图像,因此我想知道是否可以使用以下方法来节省未完全用完的驱动器的空间(由于从 ISO 复制或从较小的驱动器克隆或其他原因)。
我有以下驱动器:
Disk test: 5 MiB, 5242880 bytes, 10240 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x397f74b3
Device Boot Start End Sectors Size ID Type
test1 2048 4095 2048 1M 83 Linux
test2 4096 8191 4096 2M 83 Linux
我可以只将dd
前 8191 * 512 = 4193792 字节写入文件并获得与驱动器相同的原始图像吗?一般来说,我可以只复制最高的(“结束扇区”*逻辑扇区大小)并最终得到等效的原始图像(假设没有隐藏数据存储在分区之后)吗?
答案1
是的——如果那里没有数据,你可以忽略它。访问分区(例如,通过环回)应该可以...其他事情可能需要您将文件扩展到正确的大小(例如,使用truncate -s
),从而有效地用 0 填充它。
如果您将图像存储在类 Unix 文件系统上,则可以使用稀疏文件 - 不仅用于分区后的可用空间,还用于分区内部的可用空间。然后您就不必进行任何大小调整;例如,e2image -a -r
应该能够做到这一点。
(警告:您使用的是 DOS MBR 分区,该分区在开头存储分区信息;其他分区表格式可能在磁盘末尾存储备份或主分区表)