バックアップを維持するために、特定の SATA ハード ドライブをホットスワップ ベイのいずれかまたはすべてに挿入するときに、特定の rsync コマンドを実行したいと考えています。これは、何らかの方法で UUID を使用してドライブを追跡することで実行できますか? 検索するたびに、USB ドライブ用の udev が見つかります。ここでもこれが機能しますか?
答え1
これには単純な udev ルールを使用します。バックアップ ドライブには特定のボリューム ラベルが付けられます (設定するには tune2fs を使用します)。udev ルールはスクリプトを開始します。
$ cat /etc/udev/rules.d/90-backup.rules
ACTION=="add", ENV{ID_FS_LABEL}=="backup", RUN+="/usr/local/bin/backup.sh"
(ボリュームラベルを使用しない場合は、ENV{ID_FS_UUID}="some-uuid" を使用できます)
スクリプトは rsync を実行するだけです:
$ cat /usr/local/bin/backup.sh
#!/bin/bash
mnt=/media/backup
(
mount $mnt
rsync -avx --exclude lost+found /home/ $mnt/backup/
umount $mnt
) > /dev/null 2>&1 &
udev は RUN="" コマンドが短時間実行されることを想定しているため、スクリプトは rsync をバックグラウンドで実行します。
これは、udev がドライブが追加されたという通知を受け取る限り、あらゆるタイプのドライブやインターフェースで機能します。