通过UUID查找卷

时间:2010-02-17 06:23:07

标签: cocoa macos macos-carbon

我知道卷的UUID - 如“磁盘工具”中所示。

如何获得有关音量的其他信息? 最重要的是,我想知道它的挂载点。

查看/ etc / fstab并不能解决问题。这不会列出根卷。我至少需要找出根卷的UUID来验证我的已知UUID。

2 个答案:

答案 0 :(得分:10)

您可以使用diskutil按其UUID查找磁盘,使用-plist选项以机器可解析的格式获取输出:

% diskutil info /Volumes/RAM\ Disk | grep -F UUID
   Volume UUID:              EA20BE94-5F3C-3C02-901D-A213B5AB6831

% diskutil info -plist EA20BE94-5F3C-3C02-901D-A213B5AB6831
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <!--snip-->
    <key>MountPoint</key>
    <string>/Volumes/RAM Disk</string>
    <!--snip-->
</dict>
</plist>

您可以使用NSTask和NSPipe从程序中运行diskutil并捕获输出。

附录:并非所有卷都有UUID。我的相机有一个内置的只读MS-DOS格式的卷,根据磁盘工具和diskutil没有UUID。因此,请确保您的程序可以处理来自上述diskutil info … | grep管道的空输出。

答案 1 :(得分:-3)

有几种方法可以做到。如果您想要系统中所有UUID的列表,通常可以查看/ dev / disk / by-uuid /。

此文件夹包含将uuids映射到设备位置的符号链接。在我的系统上,它映射如下:

[sean@vladimir ~]$ ls -al /dev/disk/by-uuid/
total 0
drwxr-xr-x 2 root root 300 2010-02-02 22:42 .
drwxr-xr-x 6 root root 120 2010-02-02 22:42 ..
lrwxrwxrwx 1 root root  10 2010-02-02 22:42 02123883-6538-4c74-bc74-362eb2588d2b -> ../../sdc4
lrwxrwxrwx 1 root root  10 2010-02-02 22:42 1ce37cd8-52b0-4442-98b5-3702194644f2 -> ../../dm-5
lrwxrwxrwx 1 root root  10 2010-02-02 22:42 1d718419-8175-446c-a01b-51e895d59467 -> ../../sdc7
lrwxrwxrwx 1 root root  10 2010-02-02 22:42 382a64d7-68fe-45a3-87d3-ae7b7a861067 -> ../../dm-1
lrwxrwxrwx 1 root root  10 2010-02-02 22:42 47ab8e51-4023-4bec-a888-576879fba2dd -> ../../sdc1
lrwxrwxrwx 1 root root  10 2010-02-02 22:42 5b4e6b94-f7c7-40c1-a4ee-ca555efc97df -> ../../dm-4
lrwxrwxrwx 1 root root  10 2010-02-02 22:42 6d1df3de-b408-4942-a2e3-78244a68cece -> ../../dm-0
lrwxrwxrwx 1 root root  10 2010-02-02 22:42 c7f841db-8b38-403e-9bcc-926c18deadfc -> ../../sdc6
lrwxrwxrwx 1 root root  10 2010-02-02 22:42 db3f2c47-e29d-4b33-a462-6230ed2bcea8 -> ../../dm-2
lrwxrwxrwx 1 root root  10 2010-02-02 22:42 e5bd9df3-65f7-4815-839f-8b5fad82bc50 -> ../../sdc5
lrwxrwxrwx 1 root root  10 2010-02-02 22:42 ea28833b-fa7b-465d-992b-c333b288233b -> ../../sda1
lrwxrwxrwx 1 root root  10 2010-02-02 22:42 ebb72c56-8776-4e7d-ace9-fc727239f999 -> ../../sda2
lrwxrwxrwx 1 root root  10 2010-02-02 22:42 fd75f53b-6058-467b-9e0f-0a725e7bc83e -> ../../dm-3

或者,您可以为每个设备运行'blkid / path / to / dev',以找到您要查找的设备。同样,在我的系统上它看起来是这样的:

[sean@vladimir ~]$ blkid /dev/sda1
/dev/sda1: LABEL="restore" UUID="ea28833b-fa7b-465d-992b-c333b288233b" TYPE="ext4" 

希望有所帮助。