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, lsblk
eine Liste der Partitionen auf dem Gerät abzurufen und file -s
auf 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 -s
es so hässlich ist, aber es gibt eine Alternative.
Sie können blkid
stattdessen verwenden. Standardmäßig blkid
werden 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"