USBデバイスを任意のUSBスロットに接続するたびに、USBデバイスのデータをバックアップするスクリプトを作成したいと思います。これで識別子がわかりますが、問題はKERNEL=sdX
スロットによって、他の機器を差し込んだかどうかによってsdX
異なります。 udevでUSBデバイスを識別する最良の方法は何ですか?使ってみようかと思いましたpartuuid
が、partuuidがそもそもどこに保存されているのか、どのように計算されるのかはよく分かりません。
答え1
gdisk
デバイスを分割する代わりにを使用する場合は、パーティションごとにfdisk
PARTUUIDとPARTLABELを保持するGPTスタイルのパーティションテーブルを作成します。c
のコマンドを使用すると、gdisk
パーティション名(PARTLABEL)を設定できます。
パーティションに新しいファイルシステムを作成してパーティションを再フォーマットしても、これらのパーティションIDは変更されません。
ほとんどのファイルシステムでは、ファイルシステムからUUIDとLABELを取得または設定できます。これを行う方法は、ファイルシステムの種類によって異なります。たとえば、ext3/4の場合とtune2fs
。 Linuxでは、UUIDとLABELで表されます。-U
-L
これら 2 つの ID セットを混同しないでください。blkid
すべて表示されます。
/dev/sdb1: LABEL="MYLABEL" UUID="A369-D716" TYPE="vfat" PARTLABEL="My new partition" \
PARTUUID="f0817245-d3ce-408b-9457-e33dfc04aebe"
次のコマンドを使用してudevプロパティを表示できます。
$ udevadm info -p $(udevadm info -q path -n /dev/sdb1)
...
E: ID_FS_LABEL=MYLABEL
E: ID_FS_LABEL_ENC=MYLABEL
E: ID_FS_UUID=A369-D716
E: ID_FS_UUID_ENC=A369-D716
E: ID_PART_ENTRY_UUID=f0817245-d3ce-408b-9457-e33dfc04aebe
E: ID_PART_TABLE_UUID=7301d696-b66d-4f85-8272-7dd5e29175ae
E: ID_PART_ENTRY_NAME=My\x20new\x20partition
答え2
USBデバイスのUUID(Universally Unique Identifier Library)を使用して同様の操作を実行しました。
blkid コマンドを使用して UUID を表示できます。
# blkid
マンページを見ると、blkidに関する詳細情報を見つけることができます。
# man blkid