如果分区标签已知,则获取设备名称和挂载点

如果分区标签已知,则获取设备名称和挂载点

在已知文件系统标签的情况下如何获取分区设备名和挂载点?

有几种可能:

Linux

文件系统标签到设备名称

设备名称可以通过以下方式获取blkid

blkid -l -o device -t LABEL="$label" -c /dev/null

挂载点的设备名称

我尝试使用 获取挂载点blkid,但失败了。-s 当提供标签时,可以使用开关查询所有其他字段:

blkid -l -t LABEL="$label" -o value -s LABEL      # yields label
blkid -l -t LABEL="$label" -o value -s TYPE       # yields partition type
blkid -l -t LABEL="$label" -o value -s UUID       # yields UUID
blkid -l -t LABEL="$label" -o value -s MOUNTPOINT # yields nothing

显然不支持获取挂载点,尽管在-o list给出选项时会列出它,但不是以易于解析的方式:

blkid -o list -c /dev/null <device>

下一次尝试是使用df -P.这是我的想法,假设设备存储在变量中device

export device
mountpoint=$(df -P |
  awk --assign dev="$device" \
    '{if ($1==dev)             \
      {for (i=1; i<=NF-5; i++) \
        $i=$(i+5);             \
        NF-=5;                 \
        print                  \
      }                        \
    }')

这段代码有效。然而,鉴于它的丑陋,我不相信解析 df是首选方式。

其他大学

文件系统标签到设备名称

blkid在 Linux 上工作得很好,但它在 Solaris 或 FreeBSD 上不可用(至少不能指望它会被安装)。也同样如此 findfs

如何在 Linux、Solaris 和 FreeBSD 上以便携方式获取设备名称?

挂载点的设备名称

令人高兴的是,df -P在所有测试的系统上都会产生非常相似的输出。问题是我的丑陋awk脚本似乎不可移植(在 Solaris 和 FreeBSD 上使用awkSun进行了测试)。首选方式是什么?gawkawk

相关问题

如何使用uuid获取闪存驱动器的挂载点? 问题:/proc/mounts即使在 Linux 上,解析也不是可移植的并且很麻烦。解析mount似乎更糟糕。 Perl 一般不可用。

有没有命令可以查看磁盘挂载位置? 问题:/proc/mounts使用有错误的awk脚本进行解析。这些解决方案不可移植。

概括

当以可移植方式提供文件系统标签时(假设是 POSIX shell),我想获取设备名称和安装点。磁盘标签可能包含空格或其他非 ASCII 字符,这似乎使事情变得更加复杂。

         Label-To-Device    Device-To-Mount-Point
         ---------------    ---------------------
Linux           ✓                    ✓ (ugly)
Solaris         .                    .
FreeBSD         .                    .

答案1

您可以按照以下步骤进行操作:

  1. 开始devname使用blkid_dev_devname(...)
  2. 使用获取prob此分区blkid_new_probe_from_filename(...)
  3. 使用setmntent(...), getmntent(...), & endmntent(...),其中 mnt->mnt_fsname等于devname复制mnt->mnt_dir安装点!

请参阅这些参考资料以了解更多详细信息

内容数据结构

struct mntent {    
    char *mnt_fsname;   /* name of mounted file system */    
    char *mnt_dir;      /* file system path prefix */      
    ...
}; 

相关内容