接続時にファイルをUSBメディアに自動バックアップする方法


バックアップはデータ損失に対する最後の防御策であり、元のデータを復元する手段を提供します。データをバックアップするには、外付けハードドライブ、USBフラッシュディスク、共有ネットワークフォルダなどのリムーバブルメディア、またはリモートホストを使用できます。忘れずに重要なファイルを自動的にバックアップするのは非常に簡単です(そして同様に不可欠です)。

この記事では、データをリムーバブルメディアに接続した後、それをリムーバブルメディアに自動バックアップする方法を学びます。外部ディスクでテストします。これは、実際のソリューションでudevを使い始めるための基本的なガイドです。

この記事の目的のために、次のものを備えた最新のLinuxシステムが必要です。

  1. systemd systems and services manager
  2. udev device manager
  3. rsync backup tool

リムーバブルメディアのUdev規則を構成する方法

Udev は、デバイスイベント処理の一環として、実行中のシステムにデバイスを追加または削除したときにプログラムやスクリプトの実行をトリガーすることができるルールを定義できるデバイスマネージャです。この機能を使用して、実行中のシステムにリムーバブルメディアを追加した後にバックアップスクリプトを実行できます。

デバイスイベント処理の実際のルールを設定する前に、バックアップに使用されるリムーバブルメディアのいくつかの属性をudevに指定する必要があります。外付けディスクを実行中のシステムに接続し、次のlsusbコマンドを実行してそのベンダーと製品IDを識別します。

テストの目的で、図に示すように 1TB 外付けハードディスクを使用します。

$ lsusb

上記のコマンドの出力から、私たちのデバイスベンダーIDは 125f です。

まずシステムから接続メディアを取り出し、 /etc/udev/rules.d/ ディレクトリの下に 10.autobackup.rules という名前の新しいudevルールファイルを作成します。

ファイル名の 10 は、ルールの実行順序を指定します。ルールが解析される順序は重要です。デフォルトの前に解析されるカスタムルールを常に作成する必要があります。

$ sudo vim /etc/udev/rules.d/10.autobackup.rules

その後、以下のルールを追加してください。

SUBSYSTEM=="block", ACTION=="add", ATTRS{idVendor}=="125f" SYMLINK+="external%n", RUN+="/bin/backup.sh"

上記の規則について簡単に説明しましょう。

  • "==": is an operator to compare for equality.
  • "+=": is an operator to add the value to a key that holds a list of entries.
  • SUBSYSTEM: matches the subsystem of the event device.
  • ACTION: matches the name of the event action.
  • ATTRS{idVendor}: matches sysfs attribute values of the event device, which is the device vendor ID.
  • RUN: specifies a program or script to execute as part of the event handling.

ファイルを保存して閉じます。

自動バックアップスクリプトを作成する

システムに接続したときにリムーバブルUSBにファイルを自動バックアップする自動バックアップスクリプトを作成します。

$ sudo vim /bin/autobackup.sh 

次のスクリプトをコピーして貼り付け、スクリプトの BACKUP_SOURCE BACKUP_DEVICE 、および MOUNT_POINT の値を必ず置き換えます。

#!/usr/bin/bash
BACKUP_SOURCE="/home/admin/important"
BACKUP_DEVICE="/dev/external1"
MOUNT_POINT="/mnt/external"


#check if mount point directory exists, if not create it
if [ ! -d “MOUNT_POINT” ] ; then 
	/bin/mkdir  “$MOUNT_POINT”; 
fi

/bin/mount  -t  auto  “$BACKUP_DEVICE”  “$MOUNT_POINT”

#run a differential backup of files
/usr/bin/rsync -auz  "$MOUNT_LOC" "$BACKUP_SOURCE" && /bin/umount "$BACKUP_DEVICE"
exit

その後、次のコマンドでスクリプトを実行可能にします。

$ sudo chmod +x /bin/autobackup.sh

次に、次のコマンドを使用して udev ルールを再読み込みします。

$ udevadm control --reload

次回外付けハードディスクまたは設定したデバイスをシステムに接続したときは、指定した場所からのすべての文書が自動的にバックアップされます。

詳細については、 udev mount rsync のmanページをご覧ください。

$ man udev
$ man mount 
$ man rsync 

以下のLinuxバックアップ関連の記事も読んでおくとよいでしょう。

  1. rdiff-backup – A Remote Incremental Backup Tool for Linux
  2. Tomb – A File Encryption and Personal Backup Tool for Linux
  3. System Tar and Restore – A Versatile Backup Script for Linux
  4. How to Create Bandwidth-efficient Backups Using Duplicity in Linux
  5. Rsnapshot – A Local/Remote Backup Tool for Linux
  6. How to Sync Two Apache Web Servers/Websites Using Rsync

それは今のところすべてです!この記事では、データをLinuxマシンに接続した後にリムーバブルメディアに自動バックアップする方法について説明しました。下記のフィードバックフォームからあなたから連絡をもらいたいです。