Como posso verificar o formato do sistema de arquivos de uma imagem de disco?
Sei que posso verificar com o file
comando, mas gostaria de automatizar o comportamento.
$ 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)
Gostaria de verificar se o disco de imagem fornecido está formatado com o formato fornecido.
Por exemplo checkfs <image> <format>
, retorna 0 se a imagem contiver um sistema de arquivos 'formato', caso contrário, outro valor.
Pensei em fazer algo como file <image> | grep <format>
verificar o código de retorno, no entanto, para sistemas de arquivos vfat, 'vfat' não está aparecendo na file
saída do 's.
Eu também poderia escrever um script para fazer isso, mas não consigo encontrar ferramentas que me permitam obter o formato do sistema de arquivos de uma imagem de disco.
Eu também tentei com as seguintes ferramentas: fdisk
, parted
e df
.
Existe uma ferramenta que me permita verificar um formato de sistema de arquivo de imagem de disco e que funcione com os formatos de sistema de arquivo mais usados?
Finalmente encontrei o que precisava
blkid -o value -s TYPE <image>
retornará o tipo fs ou nada se forem dados brutos.EDITAR:
Conforme mencionado por @psusi,
parted
possui uma saída analisável por máquina. Acho menos conveniente do que usarblkid
, mas também pode ser útil.parted -m <image> print | tail -n +3 | awk -F ":" '{print $(NF-2)}'
imprimirá o tipo fs de cada partição.tail -n +3
éusado para saltar as duas primeiras linhaséusadoawk -F ":" '{print $(NF-2)}'
para obter o tipo fs queéo penúltimo elemento a partir do fim