파티션의 UUID를 얻고 이와 동일한 Bash 변수를 정의하려면 어떻게 해야 합니까?

파티션의 UUID를 얻고 이와 동일한 Bash 변수를 정의하려면 어떻게 해야 합니까?

파티션의 UUID PART_ID와 동일한 Bash 변수를 정의하고 싶습니다 . /dev/sdb1필요한 답변에 가장 가까운 결과는 다음과 같습니다.

ls -ld /dev/disk/by-uuid/* | grep sdb1

나에게 이것은 다음을 제공합니다:

lrwxrwxrwx 1 root root 10 Mar 16 17:02 /dev/disk/by-uuid/d26c3e60-0cfb-4118-9dec-1f1819439790 -> ../../sdb1

이것은 나에게 허용되는 설정 값이 아닙니다 PART_ID. 대신, PART_ID와 같아야 하는 것은 입니다 d26c3e60-0cfb-4118-9dec-1f1819439790.

답변1

이는 파티션 자체의 UUID가 아니라 파티션에 있는 파일 시스템의 UUID(또는 udev 스크립트가 UUID를 가지고 있다는 것을 알고 있는 기타 구조화된 데이터)입니다(어차피 모든 파티션 구성표가 파티션에 UUID를 제공하는 것은 아닙니다). 당신은 또한 볼 수 있습니다blkid와 mdadm UUID의 차이점은 무엇입니까?.

Linux 기반 시스템에서 FS UUID를 얻기 위한 몇 가지 옵션:

fs_uuid=$(blkid -o value -s UUID /dev/sdb1)
fs_uuid=$(lsblk -no UUID /dev/sdb1)
fs_uuid=$(udevadm info -n sdb1 -q property | sed -n 's/^ID_FS_UUID=//p')
fs_uuid=$(find /dev/disk/by-uuid -lname '*/sdb1' -printf %f)

첫 번째에는 수퍼유저 권한이나 최소한 장치 읽기 권한이 필요할 수 있습니다.

파일 시스템이 마운트된 경우 다음을 사용할 수도 있습니다.

fs_uuid=$(findmnt -fn -o UUID /dev/sdb1)

답변2

당신은 이것을 할 수 있습니다

PART_ID=$(blkid -o value -s UUID /dev/sdb1)

답변3

모든 것을 종합하면 (@Mongrel님, 감사합니다!):

이것은 자동으로 얻을 것이다

DISK=$(mount | grep " $1 type" | awk '{print $1}')
PART_UUID=$(blkid -o value -s UUID ${DISK})
echo "DISK UUID ($1): ${PART_UUID}"

산출:

DISK UUID (/): cf9eb16f-c1fa-45d1-9764-b10f064cc993

관련 정보