![磁盘的 UUID 是磁盘的属性还是系统生成的?](https://linux22.com/image/1516997/%E7%A3%81%E7%9B%98%E7%9A%84%20UUID%20%E6%98%AF%E7%A3%81%E7%9B%98%E7%9A%84%E5%B1%9E%E6%80%A7%E8%BF%98%E6%98%AF%E7%B3%BB%E7%BB%9F%E7%94%9F%E6%88%90%E7%9A%84%EF%BC%9F.png)
我正在尝试自动执行一项任务,即在外部硬盘上的数十个 Linux 系统(不在同一网络中)上同步特定文件扩展名。因此,从逻辑上讲,任务的第一部分是检查磁盘是否已安装。我打算通过 UUID 识别磁盘来实现这一点。
所以问题是:blkid
所有机器上的特定磁盘的 UUID(UUID 的输出)是否相同或不同?
答案1
UUID 由系统生成,并且是全局唯一的 - 但如果您对驱动器进行一些复制,则 UUID 在两个驱动器/每个驱动器上的所有分区上当然会相同。
在 Ubuntu 下(我相信大多数其他 Linux 版本也是如此),可以使用 uuidgen 命令生成。此命令的手册页指出“uuidgen 程序使用 libuuid(3) 库创建(并打印)新的通用唯一标识符 (UUID)。可以合理地认为,新的 UUID 在本地系统上创建的所有 UUID 中,以及在过去和将来在其他系统上创建的 UUID 中都是唯一的。“
答案2
我将同一个 USB 闪存驱动器插入两个不同的系统,所有 UUID 和 PARTUUID 信息都保持不变。因此对于特定磁盘而言,它是相同的。但是,当创建新的分区表并进行格式化时,它会发生变化。
系统1:
$ sudo blkid /dev/sdd1
/dev/sdd1: UUID="1243787E34100219" TYPE="ntfs" PARTLABEL="primary" PARTUUID="f2e13711-240b-46e1-a754-02e3427ed8fd"
$ sudo blkid /dev/sdd2
/dev/sdd2: UUID="10BF79B17BE2BB24" TYPE="ntfs" PARTLABEL="primary" PARTUUID="96eb89ca-e013-4fa3-87ca-aca5763f4065"
$ sudo blkid /dev/sdd
/dev/sdd: PTUUID="0d02ca7d-b4bd-47a8-8df8-70c972be025f" PTTYPE="gpt"
系统2:
$ sudo blkid /dev/sda1
/dev/sda1: UUID="1243787E34100219" TYPE="ntfs" PARTLABEL="primary" PARTUUID="f2e13711-240b-46e1-a754-02e3427ed8fd"
$ sudo blkid /dev/sda2
/dev/sda2: UUID="10BF79B17BE2BB24" TYPE="ntfs" PARTLABEL="primary" PARTUUID="96eb89ca-e013-4fa3-87ca-aca5763f4065"
$ sudo blkid /dev/sda
/dev/sda: PTUUID="0d02ca7d-b4bd-47a8-8df8-70c972be025f" PTTYPE="gpt"