1日の作業を終えて、作成したドキュメントのバックアップや自宅で作業するためにデータをUSBにコピーしている人もいると思います。しかし毎回コピーコマンドを実行するのは面倒だし、コピーのし忘れも発生するかもしれません。
Linux ではデバイス管理のツールとして udev というデーモンが起動しています。この udev に 特定のメーカーの USB が刺さった時に、このスクリプトを実行するようというルールを設定してあげることにより、USB を指した時にバックアップスクリプトが自動で動くようにできるのです。
まず最初に USB をPCに刺して USB の Vender ID を確認します。Elecom の USB であれば 056e です。
$ lsusb
Bus 001 Device 005: ID 056e:1234 Elecom Co., Ltd MF-HCBU2
:
そしてルールを記述します。以下の記述で
/etc/udev/rules.d/10.autobackup.rules
SUBSYSTEM=="block", ACTION=="add", ATTRS{idVendor}=="056e", SYMLINK="external%n", RUN="/usr/local/bin/backup.sh"
SUBSYSTEM : デバイスの種類
ACTION : add 追加の処理
ATTRS : 属性の記述
SYMLINK : /dev/external(パーティション番号) のデバイスを作成します。
RUN : /usr/local/bin/backup.sh を実行します。
バックアップスクリプトを用意します。このまま使用する場合は、BACKUP_SOURCE を任意のディレクトリに変更してください。
sudo nano /usr/local/bin/backup.sh
#!/bin/bash
BACKUP_SOURCE="/home/taro/SOURCE_DIR/"
BACKUP_DEVICE="/dev/external1"
MOUNT_POINT="/mnt/external"
if [ ! -e $BACKUP_DEVICE ]; then
exit -1;
fi
if [ ! -d $MOUNT_POINT ]; then
/bin/mkdir $MOUNT_POINT
fi
mount $BACKUP_DEVICE $MOUNT_POINT
echo rsync -auzv $BACKUP_SOURCE $MOUNT_POINT
rsync -auzv $BACKUP_SOURCE $MOUNT_POINT
umount $MOUNT_POINT
exit 0;
実行権を追加します。
$ sudo chmod 744 /usr/local/bin/backup.sh