データのバックアップ:rsync
玄箱をsambaサーバにしている場合、デジカメの写真や動画ファイルがたまりにたまって数十ギガになってしまうでしょう。 大事なデータをバックアップするのにDVDに焼いていたら何十枚にもなるし、第一面倒です。 大容量のデータをバックアップするにはやはり大容量のHDDがベストでしょう。ここのページでは私が行っているバックアップの方法を紹介します。
また、バックアップする容量がそんなに大きくない場合は2G程度のUSBメモリを差し込んでバックアップを取っていってもいいでしょう。
私は大容量のHDDとして、HitachiのSATA-500GBを購入して3.5インチHDDケースに入れてUSBで玄箱HGに接続しています。
しかし、ここで1つ問題が生じてしまいました。なんとUSBを接続しても製品情報は認識するがマウントできるデバイスとして認識をしてくれなかったのです。 HDDだけでなくUSBメモリも同様に接続してもマウント可能なデバイスとしては認識してくれませんでした。
玄箱ノーマルに接続すればマウントは可能なのに玄箱HGだと駄目なのでもしかしたらカーネルを2.6にした時点で HGは何かしらの設定が変わってしまったのかと思い、カーネルの再構築の設定を確認してみました。 すると、USBストレージはSCSIとして玄箱に認識されているのですが、カーネルコンフィグレーションの時点で 設定が無効になっていたので設定を有効にしたらうまく認識してくれました。
windowsでフォーマットしたストレージを認識するためにはカーネルの再構築の際に 「Japanese charset(Shift-JIS,EUC-JP)」を有効にしておく必要がありました。 また、マウントする時のオプションも指定しなければいけないようです。
例:
※外付けUSB記録媒体が認識しない人だけカーネルの再構築を行ってください
USBストレージを認識させる(認識できない人だけ)
カーネルの再構築の説明(玄箱HG setupページのコマンドkernelの再構築を参照)
# make menuconfig コマンドにて
以下にチェックが入っているか確認しておく(USBメモリ,USB-HDDを使えるようにするため)
------------カーネルコンフィグ-------------
Device Drivers ---> カテゴリ移動
SCSI device support ---> カテゴリ移動
<M> SCSI device support チェックを入れる
[ * ] legacy /proc/scsi/ support チェックを入れる
<M> SCSI disk support ←重要、チェックを入れる
File systems ---> カテゴリ移動
Native Language Support カテゴリ移動
<*>Japanese charsets(Shift-JIS,EUC-JP) チェックを入れる
------------カーネルコンフィグ-------------
チェックを入れたら玄箱HG setupページの項目にしたがって再構築を行います。
# dmesgコマンドの結果(再構築を行う前は「sda」等の赤字の文章が出てこなかった)
(略)
usb-storage: waiting for device to settle before scanning
Vendor: Kingston Model: DataTraveler 2.0 Rev: 1.00
Type: Direct-Access ANSI SCSI revision: 02
SCSI device sda: 1994752 512-byte hdwr sectors (1021 MB)
sda: Write Protect is off
sda: Mode Sense: 23 00 00 00
sda: assuming drive cache: write through
SCSI device sda: 1994752 512-byte hdwr sectors (1021 MB)
sda: Write Protect is off
sda: Mode Sense: 23 00 00 00
sda: assuming drive cache: write through
sda: sda1
sd 0:0:0:0: Attached scsi removable disk sda
usb-storage: device scan complete
(略)
上記は1GBのUSBメモリですがsdaとしてマウント可能なデバイスが認識されています。USB-HDDでも同じ事です。
無事にUSB記録媒体が認識できたら次へ進んでください
コマンド:記録媒体のフォーマット
USBを挿してマウント可能なデバイスとして認識されたらフォーマットを行います。私はext3形式でフォーマットをかけました。
# dmsgコマンドで何の名前でデバイスが認識されたかを確認します。例:sda,sdb,sdcなど
認識されている名前でフォーマットコマンドを入力します
コマンド:記録媒体のマウント
ext3でフォーマットされたストレージを下記のコマンドでマウントして実際にデータの書き込みが出来る状態にします。
恒例に従って「/mnt/」下に「usbhdd」ディレクトリを作成しました。この「usbhdd」ディレクトリにUSBストレージをマウントさせます。
マウントコマンド。ファイルシステムは自動で認識されます
他にも、windowsフォーマットならこのようなオプションでのコマンドが必要になるでしょう
コマンド:必要パッケージのインストール
rsync:このパッケージは差分バックアップが出来るのが特徴。最初にフルバックアップを取った後は 変更されたファイルだけをバックアップしてくれるので簡単にデータの同期がとれます
コマンド:バックアップの実行
実際に「/mnt/usbhdd/samba」ディレクトリを作成してここにバックアップさせます。
データの入っている「/mnt/samba/」ディレクトリを丸ごとバックアップを開始します。
※ここで大事なのはバックアップデータのあるディレクトリの表記ですが、
「/mnt/samba/」の様にディレクトリの最後に「/」をつけない場合、まず「samba」ディレクトリが作成されてから
中のディレクトリやデータがコピーされていきます。つまりバックアップ先は「/mnt/usbhdd/samba/samba/データ」となってしまいます。
最初のバックアップは時間がかかりますが2回目以降は変更のあったデータだけコピーするので 時間はかからないはずです。ちなみに、私は150G近いデータをバックアップするのに10時間くらいかかりました。
「--delete」オプションを追加してコマンド入力すれば、元データを削除した場合、バックアップ先のデータも同期して削除してくれます。
Cronに登録してバックアップ自動化
ファイルを新規作成して下記の文章を入力する
内容は1.外付け記録媒体をマウントする。2.rsyncコマンドでバックアップを取る。3.マウントを解除する
PATH=/bin:/usr/bin:/sbin:/usr/sbin
mount /dev/sda /mnt/usbhdd 認識されるデバイス名に注意。USBを差し込む順番によって違ってきます (/dev/sda,/dev/sdb・・・)
rsync -av --delete /mnt/samba/ /mnt/usbhdd/samba
umount /mnt/usbhdd
シェルスクリプトに実行権限を与えます。
Cronに登録して夜中の3時にバックアップを開始する
0 3 * * * root /root/rsync.sh ←この行を追加する
もしも外付記録媒体の電源が入っていない状態で夜中の3時になってもマウント出来ないところでコマンドは終了してしまいます。
しかし、この方法で注意することは、外付記録媒体の電源を入れてマウントされる時に認識されるデバイス名が違っているとそこでもコマンドは終了してしまいます。