web-dev-qa-db-ja.com

ディスクイメージファイルシステムタイプを確認する

ディスクイメージのファイルシステムフォーマットを確認するにはどうすればよいですか?

ファイルコマンドで確認できることはわかっていますが、動作を自動化したいと思います。

$ 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ファイルシステムの場合、file出力に「vfat」が表示されません。

それを行うスクリプトを作成することもできますが、ディスクイメージのファイルシステムフォーマットを取得するためのツールが見つかりません。

次のツールも試しました:fdiskpartedおよびdf

ディスクイメージファイルシステムのフォーマットを確認できるツールはありますか。また、最も使用されているfsフォーマットで機能しますか?

2
Arkaik

最後に私が必要なものを見つけました

  • _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_は、最初の2行をスキップするために使用されます
awk -F ":" '{print $(NF-2)}'は、末尾から3番目の最後の要素であるfsタイプを取得するために使用されます

4
Arkaik