2009年04月19日
システムのバックアップ
一ヶ月近くほったらかしてしまいました。
4月に入って少し時間に余裕が出来るはずが、部署移動の話等が出てきたりして結局心は安まりません。
もう少しのんびり仕事したいんだけどなぁ。
閑話休題。
今日はLinuxシステムのバックアップの話です。
メインサーバのパーティション構成は次のようになっています。
- システム(/) 20GB
- スワップ 500MB
- データ領域(/home) 980GB
システムに20GMもとってあるのは、当初の勘違いのためです。4GBもあれば充分だと思いますが、いまさら変更するのも大変なので、放置です。
Webデータも動画データも、全て/homeの下にディレクトリを作って管理する形をとっています。これはデータのバックアップを簡単にするためです。
このような形にしていたおかげで、結果的にシステムのバックアップも簡単に行なうことが出来ました。
システムのバックアップはファイルコピーではなくイメージでとります。今回はdumpを使用しました。データのバックアップをとっている外部HDDに /Backup ディレクトリを作りシステムのバックアップデータを入れることにします。
まずdumpのインストール
#apt-get install dump
次に実験的にバックアップをとってみます。
#/sbin/dump -0f - /dev/sda1 2> /USBHDD/Backup/SystemBackup.log | gzip > /USBHDD/Backup/sda1_`date +%y%m%d`.zip
ファイル名に日付を入れようとしましたが何故かうまくいきません。理由はバックスラッシュにすべきところをシングルクォートに間違えていました。
バックアップ元は9%程使用しているので容量は約1.8GB程。できたファイルは600MB弱。所要時間は約5分でした。
ちなみに今回はgzipで圧縮していますが、dump自身のオプションでも圧縮は可能です。dumpのオプションに単に-jとして試してみましたところ、サイズは若干増加、所要時間は倍以上でした。
さて実験が成功したので本番の準備です。バックアップの計画は次のようにしました。
- 週に一回、データのバックアップのついでにシステムもバックアップする。
- 常に完全バックアップをとる。(増分バックアップにはしない)
- 2世代残す。
- ファイルシステム等の情報も最新のものを残す。
- 完全自動化する。
データのバックアップは既に自動化していますので、そこにシステムバックアップ用のスクリプトを追加していきます。
#SystemDump
find /USBHDD/Backup -mtime +10 -maxdepth 1 -name '*.zip' -exec rm -f {} ;
fdisk -l > /USBHDD/Backup/fdisk.txt
df -k > /USBHDD/Backup/df.txt
cat /etc/fstab > /USBHDD/Backup/fs.txtdate > /USBHDD/Backup/SystemBackup.log
echo "*********************************" >> /USBHDD/Backup/SystemBackup.log/sbin/dump -0f - /dev/sda1 2>> /USBHDD/Backup/SystemBackup.log | gzip > /USBHDD/Backup/sda1_`date +%y%m%d`.zip
やってることは、
- 古いバックアップファイルを消して、
- ファイルシステム等の情報を取り、
- ログファイルに日付等の装飾をつけ、
- システムのバックアップを取り圧縮して保存する。
といった感じですね。
これでバックアップはとりあえずOK。
次はリストアを試して何時でも復活可能なようにしておかなければなりませんが、これはまた後日。