外部SSDが接続されるたびにrsyncを実行するシェルスクリプトをどのように作成しますか?

外部SSDが接続されるたびにrsyncを実行するシェルスクリプトをどのように作成しますか?

rsyncコマンドを実行してローカルディレクトリを外部SSDと同期させたいと思います。私は次の指示に従いました。このリンク。udev 規則に従っていくつかのコマンドを実行します。これは、idVendorとidProductに基づいて特定のUSBドライブに対してコマンドを実行する方法を示しています。これは私の命令です。/etc/udev/rules.d/test.rules:

ATTRS{idVendor}=="0781", ATTRS{idProduct}=="558c", RUN+="/temp/auto_back.sh"

/tmp/auto_back.shただいま

#!/bin/bash

# auto backup command 

rsync -avzh /home/abhishek/Dropbox /media/abhishek/Hachiko

私はこれについて多くの洞察力を持っていません。私はこれが役に立つと思いました。しかしそれは真実ではない。時々、ドライブがマウントされる前にこのコマンドが実行されることがわかりました。私が何を間違っていて、これがどのように機能するかについての洞察を与えることができますか?また、スクリプトのコマンドを実行する前に一定時間待つ方法はありますか?

ベストアンサー1

udevは、正しい情報(usbなど)を渡した場合にのみ機能します。

KERNEL=="sd*", ATTRS{vendor}=="<Vendor name>", ATTRS{model}=="<Model>", ATTRS{serial}=="<serial>", RUN+="/your script path"

または、

ハードウェアの種類やその他の詳細がわからないため、コード全体を書くことはできませんが、このロジックを確認して入れてください。予約されたこと長期実行プロセスを使用するか、ログを確認してください。新しいハードウェアをdmesg出力に表示する必要があります。

if "string matching in dmesg" && "within 30s"; then 
     check disk is properly mounted
     check disk is writable
     start backup
fi

バックアップを開始する前に、ディスクが論理的に書き込み可能で正しくマウントされていることを確認してください。

おすすめ記事