파일 시스템이 있는 모든 파티션 찾기

파일 시스템이 있는 모든 파티션 찾기

장치의 모든 파일을 디렉터리에 복사하는 스크립트를 작성 중입니다. 문제는 일부 장치에 여러 파티션이 있고 일부 파티션에는 파일을 복사할 파일 시스템이 없다는 것입니다. 현재 저는 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다른 방법이 있습니다. 대신 이것을
사용할 수 있습니다 blkid. 기본적으로 blkid인수를 사용하지 않으면 파일 시스템 유형을 포함하여 해당 장치에 대한 일부 정보와 함께 알려진 블록 장치가 나열됩니다. 형식은 또한 키=값 쌍 형식(기본값)이므로 스크립트에 쉽게 덤프할 수 있습니다.

내 시스템의 출력은 다음과 같습니다.

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

관련 정보