将可启动 U 盘转换为 ISO 文件

use*_*275 2 boot usb iso

我正在尝试从可启动的 USB 记忆棒中获取 ISO 文件。棒的设备名称是dev/sdf1. 在这个答案中:Convert bootable USB to ISO filedd建议进行复制。所以我做了:

sudo dd if=/dev/sdf1 of=win7.iso
Run Code Online (Sandbox Code Playgroud)

但是,棒子有30G的大小,但只使用了12G。运行上面的命令,它会创建一个大于 12G 的 iso 映像,dd当文件大于 20G 时我停止了,因为我用完了磁盘空间。ISO文件变得这么大是正常的还是有另一种方法来实现我的目标?

fro*_*utz 5

dd是 1:1 复制,它复制整个设备,不管上面有什么。如果您只复制一个分区 ( sdf1),它不太可能是可引导的,因为引导加载程序通常驻留在 sdf MBR 上。

如果可用空间归零,您可以使用 gzip 来节省可用空间。

要将可用空间归零,您可以使用:

mount /dev/sdf1 /mnt/tmp
dd if=/dev/zero bs=1M | split -b 1G - /mnt/tmp/zerofile
sync
rm /mnt/tmp/zerofile*
umount /mnt/tmp
Run Code Online (Sandbox Code Playgroud)

要创建 gzip 压缩图像:

dd if=/dev/sdf bs=1M | gzip > win7.img.gz
Run Code Online (Sandbox Code Playgroud)

要从该图像恢复,它是:

gunzip < win7.img.gz | dd of=/dev/sdf bs=1M
Run Code Online (Sandbox Code Playgroud)

其他替代方案是partimageor ntfsclone(在 ntfs 的情况下),它只存储文件,而不是可用空间,但结果可能无法启动,因为它不是 1:1 的副本。