ユーザーがUSBディスクをバックアップ先として選択できるスクリプトを作成しています。アイデアは、デバイス全体にわたってパーティションを作成することです。lsusb
ベンダーIDと名前が与えられたら、それをユーザーに提示したいと思います。
明らかに、他のデバイスではなくディスクのみをリストしたいと思います。また、/dev
ユーザーが選択したディスクのデバイス名を知っておくと、そのディスクにパーティションを作成できます。私はそこにあるさまざまなシンボリックリンクを見て、/dev/disk/
相互/sys/
参照を見つけようとしました。私は利点を活用しlsblk
てdf
目標を達成できませんでした。私は知りたいです:
lsusb
どのUSBデバイスがディスクであるかを確認するために提供された情報をどのように使用できますか?lsusb
提供された情報を使用して/dev
特定のデバイスのデバイス名を取得するにはどうすればよいですか?
答え1
あなたの質問への答えは、スクリプトをトリガーするためにどのメカニズムが使用されるかによって異なります。
ある種のバックアッププログラムからスクリプトを呼び出すと仮定すると、USBデバイスが接続されたときにプログラムはすぐには呼び出されません。ウデブルール(ルールなど)を使用して、必要なudevadm info
すべての情報を収集できます。
アイデアは次のとおりです。
- 接続されたUSBドライブには自動的にデバイスノードが割り当てられます。/dev/sdXカーネル別
- すべてのデバイスノードを繰り返す場合/dev/sd[az](または実際に存在するものは何でも/開発/)各ドライブを呼び出すと、
udevadm info --query=all /dev/sdX
出力に次のような行があるので、そのドライブのどれがUSBドライブかを知ることができます。
E: ID_BUS=usb
- 同様に、次のベンダーとモデルを含む出力ラインを見つけることができます。
E: ID_MODEL=Flash_Disk
< ... >
E: ID_VENDOR=Generic
udevadm
したがって、usingなどの結果を解析すると、grep
目的に必要なすべての情報を収集できます。