Os primeiros bytes (não literalmente, mas geralmente no primeiro 4KiB) contêm uma assinatura, especialmente criada para ser única. O utilitário file
pode determinar essas assinaturas. Veja por si mesmo:
$ # Create an example file we can write to. vdisk stands for your partition.
$ dd if=/dev/zero of=vdisk bs=1M count=40
$ mkfs.ext2 -qF vdisk
$ file vdisk
vdisk: Linux rev 1.0 ext2 filesystem data, UUID=cce25572-...-f4eba2957279
$ mkfs.xfs -fq vdisk
$ file vdisk
vdisk: SGI XFS filesystem data (blksz 4096, inosz 256, v2 dirs)
$ # How does file find out? Let's look inside the partition
$ hexdump vdisk -C | head -n 1
00000000 58 46 53 42 00 00 10 00 00 00 00 00 00 00 28 00 |XFSB..........(.|
Para obter uma lista detalhada de sistemas de arquivos que file
reconhece, dê uma olhada em magic/Magdir/filesystems
no file
código-fonte . Se você está interessado apenas naqueles suportados pelo seu kernel, inspecione include/linux/magic.h
nas fontes do seu kernel.
Se você estiver interessado em um dispositivo de bloco especial, a opção -s
também é útil, assim como -L
que seguirá (desreferencia) links simbólicos em vez de operar no próprio link. Por exemplo, se estiver usando um volume lógico e mapeador de dispositivos, algo como:
file -Ls /dev/mapper/home
pode ser útil.