SATA ドライブ (ベイは esata ではない) をホットプラグするときに自動的に rsync を実行します。

SATA ドライブ (ベイは esata ではない) をホットプラグするときに自動的に rsync を実行します。

バックアップを維持するために、特定の 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 がドライブが追加されたという通知を受け取る限り、あらゆるタイプのドライブやインターフェースで機能します。

関連情報