どのUSBポートに接続されていても、udevにUSBデバイスを認識させるにはどうすればよいですか?

どのUSBポートに接続されていても、udevにUSBデバイスを認識させるにはどうすればよいですか?

USBデバイスを任意のUSBスロットに接続するたびに、USBデバイスのデータをバックアップするスクリプトを作成したいと思います。これで識別子がわかりますが、問題はKERNEL=sdXスロットによって、他の機器を差し込んだかどうかによってsdX異なります。 udevでUSBデバイスを識別する最良の方法は何ですか?使ってみようかと思いましたpartuuidが、partuuidがそもそもどこに保存されているのか、どのように計算されるのかはよく分かりません。

答え1

gdiskデバイスを分割する代わりにを使用する場合は、パーティションごとにfdiskPARTUUIDと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

関連情報