检查磁盘映像文件系统类型

检查磁盘映像文件系统类型

如何检查磁盘映像的文件系统格式?

我知道我可以使用该file命令进行检查,但我想自动化该行为。

$ file img.raw
img.raw:   data

$ file img.ext4
img.raw:   Linux rev 1.0 ext4 filesystem data, UUID=346712e7-1a56-442b-a5bb-90ba4c6cc663 (extents) (64bit) (large files) (huge files)

$ file img.vfat
img.vfat:  DOS/MBR boot sector, code offset 0x3c+2, OEM-ID "mkfs.fat", sectors/cluster 16, reserved sectors 16, root entries 512, Media descriptor 0xf8, sectors/FAT 256, sectors/track 32, heads 64, sectors 1024000 (volumes > 32 MB) , serial number 0x4b5e9a12, unlabeled, FAT (16 bit)

我想检查给定的映像磁盘是否使用给定的格式进行格式化。

例如,checkfs <image> <format>如果图像包含“格式”文件系统,则返回 0,否则返回另一个值。

我考虑过执行类似的操作file <image> | grep <format>并检查返回代码,但是对于 vfat 文件系统,“vfat”不会出现在file的输出中。

我也可以编写一个脚本来执行此操作,但我找不到允许我获取磁盘映像的文件系统格式的工具。

我还尝试过使用以下工具:fdiskparteddf

是否有一种工具可以让我检查磁盘映像文件系统格式并且适用于最常用的文件系统格式?

答案1

终于找到了我需要的东西

  • blkid -o value -s TYPE <image>将返回 fs 类型,如果是原始数据,则不返回任何内容。

编辑:

正如@psusi 提到的,parted有一个机器可解析的输出。我发现它不如使用方便,blkid但也很有用。

  • parted -m <image> print | tail -n +3 | awk -F ":" '{print $(NF-2)}'将打印每个分区的文件系统类型。

tail -n +3用于跳过前两行
awk -F ":" '{print $(NF-2)}'用于获取 fs 类型,即从末尾开始的倒数第三个元素

相关内容