USBドライブがマウントされたときにスクリプトが機能するようにする方法

USBドライブがマウントされたときにスクリプトが機能するようにする方法

さて、これは私が達成したいものです。

いつでもスクリプトを実行するように複数のシステムを構成したいと思います。どのUSBスティックをマウントし、USBスティックに特定のフォルダがある場合は、その内容をシステムのフォルダにコピーします。

特定のUSBがマウントされたときにスクリプトを実行する方法を調べて見つけましたが、何も見つかりませんでした。次に、スクリプトが新しくマウントされたUSBスティックで自動的に機能するように、スクリプトのマウントポイントまたはルートパスをスクリプトまたは他の回避策に渡す必要があります。

実際にディレクトリを見つけて、実行したいディレクトリをコピーするスクリプトを作成しましたが、マウントされたUSBでそれを使用する方法がわかりません。

本質的に実際の理由は、スティックを複数のシステムに接続し、ファイルを各システムに自動的にコピーできるようにしたいからです。 2つのUbuntuインストールとラズベリーパイベースの別の2つのlibreelecがあるため、追加のパッケージをインストールするオプションはあまりありません。主に基本的なsystemdスクリプトとbashスクリプトが必要です。

私はUbuntuとlibreelecで動作するので、クロスLinuxソリューションが欲しいです。私はシステムdを使用することを好みますが、udevはより良い解決策になるかもしれません。

答え1

udevルールはこれを達成する最も簡単な方法です。 udevルールは/etc/udev/rules.d通常、次の形式で保存され、それに従います。NN-filename.ruleここで、NNどのルールファイルが最初にロードされるかを決定します。

たとえば、/etc/udev/rules.d/10-local.rules次を追加すると、リムーバブルブロックデバイスが接続されるたびに、次の形式のカーネル名でイベントがトリガされますsdX

KERNEL=="sd?", SUBSYSTEM=="block", ATTR{removable}=="1", RUN+="/path/to/script.sh"

デバイスがインストールされる前にスクリプトが起動される可能性があるため、デバイスを手動でインストールする必要があります。

他のルールを一致させたい場合は、使用しているデバイスによって引き起こされるすべてのイベントのプロパティを確認できますudevadm info -a /dev/devname

関連情報