The more hard drives are lying around and the more you use them, then it becomes more important to know how to unambiguously determine file system type without mounting it.
parted
This utility is very useful to quickly determine used file systems on specified device.
Internal hard drive using GUID partition table.
$ sudo parted /dev/sda print Model: ATA LITEON L8H-256V2 (scsi) Disk /dev/sda: 256GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 512MB 511MB fat32 boot, esp 2 512MB 31.2GB 30.7GB ext4 3 31.2GB 248GB 217GB ext4 4 248GB 256GB 8193MB linux-swap(v1)
External hard drive using MBR partitioning scheme.
$ sudo parted /dev/sdb print Model: INTEL SS DSA2M080G2GC (scsi) Disk /dev/sdb: 80.0GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 256MB 255MB primary ext2 boot 2 257MB 80.0GB 79.8GB extended 5 257MB 80.0GB 79.8GB logical
lsblk
This utility from util-linux
package will print information about all available or the specified block devices
using sysfs file system and udev database to gather information.
Execute it to print information using tree-like format.
$ lsblk -f /dev/sda NAME FSTYPE LABEL UUID MOUNTPOINT sda ├─sda1 vfat DA4C-5D7D /boot/efi ├─sda2 ext4 ff4db0d2-e659-4e1d-a7eb-f7ec49351ac8 / ├─sda3 ext4 375ddc04-190b-444d-85aa-907905fb4aa2 /home └─sda4 swap 2c753483-f8ea-42ef-bbcd-a0c9dd2fc751 [SWAP]
$ lsblk -f /dev/sdb NAME FSTYPE LABEL UUID MOUNTPOINT sdb ├─sdb1 ext2 763b1a31-0a41-453c-aebb-8f28e45b19db /media/milosz/763b1a31-0a41-453c-aebb-8f28e45b19db1 ├─sdb2 └─sdb5 crypto_LUKS 92e4fc6c-eac0-434e-9d4c-316449a0f122
Print determined file system information for the specified block devices.
$ lsblk -n -o FSTYPE /dev/sdb5 crypto_LUKS
It can be easily used inside shell script using local variables.
$ lsblk -P -o NAME,FSTYPE /dev/sda1 NAME="sda1" FSTYPE="vfat"
$ (eval $(lsblk -P -o NAME,FSTYPE /dev/sda1); echo $NAME - $FSTYPE) sda1 - vfat
blkid
utility to achieve the same results, so I will omit it this time.file
This basic utility provides an option to determine the file system type of the data in specified raw disk partition.
$ sudo file -s /dev/sda3 /dev/sda3: Linux rev 1.0 ext4 filesystem data, UUID=375ddc04-190b-444d-85aa-907905fb4aa2 (needs journal recovery) (extents) (large files) (huge files)
$ sudo file -s /dev/sda4 /dev/sda4: Linux/i386 swap file (new style), version 1 (4K pages), size 2000127 pages, no label, UUID=2c753483-f8ea-42ef-bbcd-a0c9dd2fc751
$ sudo file -s /dev/sdb5 /dev/sdb5: LUKS encrypted file, ver 1 [aes, xts-plain64, sha1] UUID: 92e4fc6c-eac0-434e-9d4c-316449a0f122
As you can see, this utility provides very detailed information regarding file system type.