Alle Partitionen mit Dateisystemen finden

Alle Partitionen mit Dateisystemen finden

Ich schreibe ein Skript, das alle Dateien auf einem Gerät in ein Verzeichnis kopiert. Das Problem besteht darin, dass einige der Geräte mehrere Partitionen haben und einige der Partitionen keine Dateisysteme haben, aus denen Dateien kopiert werden können. Im Moment denke ich darüber nach, lsblkeine Liste der Partitionen auf dem Gerät abzurufen und file -sauf jeder Partition nach einem Dateisystem zu suchen.

Gibt es eine weniger brachiale Möglichkeit, das zu tun, was ich versuche?


Hier sind Informationen zum Problem der leeren Partition:

# /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

Antwort1

Ich glaube nicht lsblk, dass file -ses so hässlich ist, aber es gibt eine Alternative.
Sie können blkidstattdessen verwenden. Standardmäßig blkidwerden ohne Argumente die bekannten Blockgeräte und ein paar Informationen dazu aufgelistet, einschließlich des Dateisystemtyps. Das Format ist außerdem im Schlüssel=Wert-Paarformat (standardmäßig), was das Einfügen in ein Skript erleichtert.

So sieht die Ausgabe auf meinem System aus:

>> 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" 

verwandte Informationen