如何检查磁盘映像的文件系统格式?
我知道我可以使用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
's 的输出中。
我也可以编写一个脚本来执行此操作,但我找不到允许我获取磁盘映像的文件系统格式的工具。
我还尝试过使用以下工具:fdisk
、parted
和df
.
是否有一种工具可以让我检查磁盘映像文件系统格式并适用于最常用的文件系统格式?
终于找到我需要的了
blkid -o value -s TYPE <image>
如果它是原始数据,将返回 fs 类型或不返回任何内容。编辑:
正如@psusi 所提到的,
parted
具有机器可解析的输出。我发现它不如使用方便,blkid
但它也可能有用。parted -m <image> print | tail -n +3 | awk -F ":" '{print $(NF-2)}'
将打印每个分区的 fs 类型。tail -n +3
用于跳过前两行awk -F ":" '{print $(NF-2)}'
用于获取 fs 类型,它是从末尾开始的倒数第三个元素