systemdは特定のUSBデバイスを自動的にマウントし、バックアップスクリプトを実行します。

systemdは特定のUSBデバイスを自動的にマウントし、バックアップスクリプトを実行します。

特にバックアップを実行するには、特定のUSBスティックを取り付けた後にスクリプトを実行する必要があります。

udevルール内でデバイスをマウントするための多くの(そして古い)投稿を見ましたが、最新のオペレーティングシステムはフラッシュドライブを自動的にマウントするようにシステムが事前設定されています。

私はこのudevルールを持っています。

ACTION=="add", ATTRS{idVendor}=="1234", ATTRS{idProduct}=="000c", SUBSYSTEM=="block", ENV{ID_FS_USAGE}=="filesystem", RUN+="/home/me/scripts/backup-x.sh"

これは、デバイスが接続された後に特別に何かを実行できる唯一のLinuxカーネルフックであるためです。

しかし、デバイスがsystemdによって自動的にマウントされる場合、つまり。接続後右/media/me/0021-0000

Sep 27 12:32:00 t14 udisksd[1272]: Mounted /dev/sda at /media/me/0021-0000 on behalf of uid 1000

udev RUNスクリプトにインストールしないでください(バックアップなどの長い作業を実行している場合でも)。 RUNスクリプトでこれを試しました。

systemd-mount --owner me $DEVNAME /mnt/x
zip /home/me/x/backup-$(date +'%Y-%m-%d_%H%M%S').zip /mnt/x/*

ただし、2つの異なるマウントが作成されます。私が最初に起こったのはautoです/media/me/0021-0000。これが良いアイデアかと思います。

これを達成する最も簡単で正しい方法は何ですか?

PD:ランニングポップ!_OS 22.04LTS

関連情報