디스크 이미지의 파일 시스템 형식을 확인하는 방법은 무엇입니까?
해당 명령을 사용하여 확인할 수 있다는 것을 알고 있지만 file
해당 동작을 자동화하고 싶습니다.
$ file img.raw
img.raw: data
$ file img.ext4
img.raw: Linux rev 1.0 ext4 filesystem data, UUID=346712e7-1a56-442b-a5bb-90ba4c6cc663 (extents) (64bit) (large files) (huge files)
$ file img.vfat
img.vfat: DOS/MBR boot sector, code offset 0x3c+2, OEM-ID "mkfs.fat", sectors/cluster 16, reserved sectors 16, root entries 512, Media descriptor 0xf8, sectors/FAT 256, sectors/track 32, heads 64, sectors 1024000 (volumes > 32 MB) , serial number 0x4b5e9a12, unlabeled, FAT (16 bit)
특정 이미지 디스크가 해당 형식으로 포맷되어 있는지 확인하고 싶습니다.
예를 들어 checkfs <image> <format>
이미지에 "형식" 파일 시스템이 포함되어 있으면 0을 반환하고, 그렇지 않으면 다른 값을 반환합니다.
비슷한 작업을 수행하고 반환 코드를 확인하려고 생각했지만 file <image> | grep <format>
vfat filesystems 의 출력에 "vfat"가 표시되지 않습니다 file
.
이를 수행하기 위한 스크립트를 작성할 수도 있지만 디스크 이미지의 파일 시스템 형식을 가져올 수 있는 도구를 찾을 수 없습니다.
또한 다음 도구를 사용해 보았습니다: fdisk
, parted
및 df
.
디스크 이미지 파일 시스템 형식을 확인하고 가장 일반적으로 사용되는 파일 시스템 형식과 작동할 수 있는 도구가 있습니까?
답변1
드디어 나에게 필요한 것을 찾았다
blkid -o value -s TYPE <image>
fs 유형을 반환합니다. 원시 데이터인 경우 아무것도 반환되지 않습니다.
편집하다:
@psusi가 언급했듯이 parted
기계로 구문 분석 가능한 출력이 있습니다. 사용하기 쉽지는 않지만 blkid
유용하다고 생각합니다.
parted -m <image> print | tail -n +3 | awk -F ":" '{print $(NF-2)}'
각 파티션의 파일 시스템 유형이 인쇄됩니다.
tail -n +3
처음 두 줄을 건너뛰고
awk -F ":" '{print $(NF-2)}'
fs 유형, 즉 끝에서 시작하여 마지막에서 세 번째 요소를 가져오는 데 사용됩니다.