Linux下如何可靠地判断文件系统类型?

Linux下如何可靠地判断文件系统类型?

我希望能够运行一个命令来打印格式化分区的 FAT 版本/子类型到底是什么(FAT12/FAT16/FAT32/VFAT/exFAT)

有些人建议遵循命令

# stat -f -c %T /boot/efi
msdos

或者

# df -T | grep boot
/dev/sda2      vfat        262144     67916    194228  26% /boot/efi

这是statexFAT 的打印内容

# stat -f -c %T /media/a1ex/7B57-DCAA/
fuseblk

这些输出看起来很混乱,不是吗?

答案1

这是问题的真实答案。

file -s命令确实提供了有关 FAT 类型的信息:

$ sudo file -s /dev/nvme0n1p2

/dev/nvme0n1p2: DOS/MBR boot sector, code offset 0x58+2, OEM-ID "MSDOS5.0", sectors/cluster 2, reserved sectors 6654, Media descriptor 0xf8, sectors/track 63, heads 255, hidden sectors 1085440, sectors 204800 (volumes > 32 MB), FAT (32 bit), sectors/FAT 769, reserved 0x1, serial number 0xbe4b6aa0, unlabeled

相关部分=>FAT (32 bit)

答案2

vfat只是根据分区表和fstab来表示它是FAT分区。会告诉你与或fdisk -l相同的事情。df -Tmount

我不会使用stat,我会使用file /dev/sda2orparted /dev/sda -l来获得更好的想法。

旁注:fuseblk用于自动安装的媒体。/boot/efi/media/...您展示的示例之间有明显的区别。

答案3

这个命令会做到这一点:

lsblk -o FSTYPE

更有用的标志组合可能是:

lsblk -o FSTYPE,MOUNTPOINT,TYPE,NAME

FSTYPE      MOUNTPOINT TYPE  NAME
                       disk  sda
ntfs                   part  ├─sda1
ntfs                   part  └─sda2
            [SWAP]     disk  zram0
                       disk  nvme0n1
ext4        /boot      part  ├─nvme0n1p1
crypto_LUKS            part  └─nvme0n1p2
btrfs       /home      crypt   └─luks-69980091-6c68-42a0-adf9-4d7e07c7239f

相关内容