重要ファイルをUSBメモリに自動保存

LINEで送る
Pocket

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
LINEで送る
Pocket

  • このエントリーをはてなブックマークに追加

コメントを残す

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください