udevを使用せずにファイルをコピーするBashスクリプト

udevを使用せずにファイルをコピーするBashスクリプト

特定のUSBドライブが接続されているときに実行するスクリプトが設定されています。 USBドライブのフォルダをバックアップフォルダにコピーするか、フォルダがすでに存在する場合はそのフォルダを上書きする必要があります。ただし、USBドライブを接続するとフォルダが作成されますが、ファイルはコピーされません。

私の.rulesは次のようになります。

ACTION=="add", ATTR{idVendor}==Vendor, ATTR{idProduct}==Product, RUN+="/bin/sh /path/to/file/mkBackup"

私のファイルmkBackupは次のとおりです。

#!/bin/bash
a="/path/to/file/Backup"
if [ -e $a ]; then
        rm -rf $a
fi
mkdir $a
cp -r /path/to/usb/folder $a

実行するとudevバックアップフォルダが作成されますが空ですが、実行すると./mkBackupフォルダが作成され、内容がすべてコピーされます。このようなことは初めてなのでudev簡単な質問のように見えてもご了承ください。よろしくお願いします。

答え1

バックアップフォルダが作成されたため、デバイスを接続するとスクリプトが正常に実行されることがわかります。スクリプトが実行されているようです。今後装置が実際に設置された。したがって、これらのファイルはまだcp

sleep 5後で追加するとどうなりますかmkdir $a?それとも既存のファイルをコピーしようとするとどうなりますか?

このリンク参考資料としても役立ちます。

私も使用します:

udevadm monitor --udev

udevイベントをリアルタイムで視聴します。

udevadm test /path/to/dev

デバイスに対して実行されているudevイベントをシミュレートします。これが起こるので注意してくださいいいえRUNキーで指定されたプログラムを実行します。

編集する:Gilesが有用に指摘したように、私のアイデアは機能しません。そして私は解決策を知らない。理由は次のとおりです。

UdevはUSBデバイスをオペレーティングシステムで使用できるようにします。これにより、オペレーティングシステムは、オペレーティングシステムにマウント可能なファイルシステムが含まれていることを認識してマウントします。この時点で、USBデバイスのファイルを実際に使用できます。

udev ルールによって実行されるすべてのスクリプトが実行されます。今後ファイルシステムが実際にマウントされました。選択肢がある場合は、投稿を更新します。

関連情報