ファイルシステムを持つすべてのパーティションを探す

ファイルシステムを持つすべてのパーティションを探す

デバイス上のすべてのファイルをディレクトリにコピーするスクリプトを作成しています。問題は、一部のデバイスに複数のパーティションがあり、一部のパーティションにファイルをコピーするファイルシステムがないことです。現在、私はlsblkデバイスのパーティションのリストを取得し、file -s各パーティションのファイルシステムを確認するためにそれを使用することを検討しています。

私がやりたいことをより簡単にする方法はありますか?


空のパーティションの問題に関する情報は次のとおりです。

# /dev/sdb is a flashdrive with two partitions
# /dev/sdb1 has no filesystem
# /dev/sdb2 has an ext4 partition
$ lsblk -fi
...
sdb    vfat   CARRIER-R C84B-6A72                            
|-sdb1 vfat   CARRIER-R C84B-6A72                            
`-sdb2 ext4   CARRIER-R 33ebb632-68a5-4bf5-bd29-90733af9699e
...

$ lsblk -ln -o NAME,FSTYPE
...
sdb  vfat
sdb1 vfat
sdb2 ext4
...

# As confirmation, mounting the partition fails
$ mount -t auto /dev/sdb1 /mnt
mount: wrong fs type, bad option, bad superblock on /dev/sdb1
...

$ dmesg | tail
...
[  985.933627] EXT4-fs (sdb1): VFS: Can't find ext4 filesystem
[  985.935722] EXT4-fs (sdb1): VFS: Can't find ext4 filesystem
[  985.937603] EXT4-fs (sdb1): VFS: Can't find ext4 filesystem
[  985.939623] FAT-fs (sdb1): invalid media value (0xa7)
[  985.939627] FAT-fs (sdb1): Can't find a valid FAT filesystem

ベストアンサー1

lsblk私はそれが醜いとは思わないが、file -s他の方法があります。代わりにこれを
使用できますblkidblkidデフォルトでは、引数を使用しない場合は、ファイルシステムタイプを含む、そのデバイスに関するいくつかの情報とともに、既知のブロックデバイスが一覧表示されます。形式はキーと値のペア形式(デフォルト)なので、スクリプトに簡単にダンプできます。

私のシステムの出力は次のとおりです。

>> blkid
/dev/sda1: LABEL="boot" UUID="5F6E-FD2B" TYPE="vfat" 
/dev/sda2: UUID="yBVbC2-MFnP-1T1s-9XGz-VCUH-S5oG-aNSXDg" TYPE="LVM2_member" 
/dev/mapper/sys-root: UUID="0e1e5a6b-31b2-4e13-9b26-cbbb74e95ab9" TYPE="xfs" 
/dev/mapper/sys-var--log: UUID="49f1b45d-d303-4c2e-a72b-c75e8f1e27ae" TYPE="xfs" 
/dev/mapper/sys-usr--portage: UUID="b8a494dd-f7f4-4e5e-9975-e21a61c95d22" TYPE="xfs" 
/dev/mapper/sys-stmp: UUID="f2b3252c-3ec2-4c66-bed2-26c93f12b535" TYPE="xfs" 
/dev/mapper/sys-home--phemmer--luks: UUID="898f9f52-3c9d-475c-9e7b-1a2263778a39" TYPE="crypto_LUKS" 
/dev/mapper/_dev_dm_4: UUID="d0cb5255-e35a-4ee2-94ca-f1a7f7339eb9" TYPE="xfs" 

おすすめ記事