如何查看驱动器二进制副本的现有文件?

如何查看驱动器二进制副本的现有文件?

问候

我最近一直在研究Linux 中的压缩和复制的概念。

当我被介绍给dd命令,我发现它非常有用,所以作为练习,我一点一点地将我的 fat32 拇指驱动器复制到一个文件中。

我天真的期待的是能够直接访问拇指驱动器内的文件,这在逐位复制后是不可能的,这表明该dd命令实际上可能只用于生成文件系统的图像。

我目前正在寻找一个命令,可以从逐位副本中读取文件,这样的命令是否存在?

答案1

如果您这样做cp /dev/sdb1 file.img(或者与此相同,dd但使用dd在这里会适得其反,尤其是在默认块大小的情况下),将设备第一个分区的原始内容复制sdbfile.img,file.img的内容将是一个 VFAT 格式的文件系统映像,例如isoimage 将包含 ISO9660 类型文件系统的映像,因此您需要访问其中的文件的是能够理解 VFAT 文件系统的东西,就像您需要能够理解 ustar/pax 文件格式来访问存档中的文件一样tar

/dev/sdb1Linux 内核确实理解 VFAT 文件系统,这就是您在挂载/dev/sdb1到某个目录后能够访问文件的方式。

您还可以使用块设备挂载包含在普通文件中的文件系统loop

sudo losetup -f --show file.img

f将创建一个循环设备(使用其路径的第一个ree 设备show),其行为类似于块设备,但由常规文件支持。

然后您可以使用 来安装它sudo mount /dev/loopXX /some/directory

如果您不打算对图像进行任何修改,则可能应该通过向该命令添加-r或将其挂载为只读,或者甚至通过将选项-o ro传递给 来使循环设备本身成为只读。-rlosetup

如今,如果您通过以下选项,则可以自行mount完成:losetup-o loop

sudo mount -o loop file.img /some/directory

对于更新的版本,您甚至可以跳过,-o loop因为如果尝试挂载常规文件,它会假设您想要循环挂载:

sudo mount file.img /some/directory

其他理解 VFAT 文件系统的东西是 GNU mtools,您可以使用COMMAND.COM/ CMD.EXEMS-DOS/Windows 命令(dir, type, copy... )前缀m(对于 Microsoft/MS-DOS)来访问 VFAT 格式磁盘中的文件或磁盘映像。

mdir -i file.img

将列出 中包含的 VFAT 文件系统根目录的内容file.img

相关内容