2009.07.28
Yoshi 開発

rdiff 差分バックアップ (CentOS) [概要編]

日時でdump_all等で取得してネットワーク越しにバックアップを取る際
最初のうちはよいですが、データが多くなってくると時間は掛かるし・・帯域は結構使うし・・バックアップ要領も結構使うし・・・。
という事がよくあると思います。
差分で必要分だけバックアップして、リストアする時に結合してバックアップできたら最高だと思いませんか!?

というわけで今回は差分バックアップをご紹介します。

rdiffではzipファイル等の圧縮ファイルでもDB(postgresql,mysql等)のdumpデータでも全て差分で取得できるので
日時バックアップに非常に便利です。

rdiffが入っていない場合は、まずrdiffをインストールする必要があります。
簡単ですので下記のコマンドを入力しましょう。

# rpm -aq | grep python-devel
# yum install python-devel

# rpm -aq | grep librsync
# wget https://downloads.sourceforge.net/librsync/librsync-0.9.7.tar.gz?modtime=1097439809&big_mirror=0

# tar zxf librsync-0.9.7.tar.gz
# cd librsync-0.9.7
# ./configure
# make AM_CFLAGS=-fPIC
# make install
# ldconfig
# cd ..

# wget https://savannah.nongnu.org/download/rdiff-backup/rdiff-backup-1.2.5.tar.gz
# tar zxf rdiff-backup-1.2.5.tar.gz
# cd rdiff-backup-1.2.5
# python setup.py install

バックアップ方法

ベースの作成

まず元となるデータのベースを作成します。
※毎回バックアップの前に最新のベースを作成する必要があります。

rdiff signature ORIGINAL.txt SIGNATURE.sig

SIGNATURE.sigがORIGINAL.txtのベース部分になります。
要はSIGNATURE.sigと新しいデータを比較して、差分を作成していくことになります。

差分の作成

rdiff delta SIGNATURE.sig MODIFIED.txt DELTA.rdiff

現在のベースとなるSIGNATURE.sigとORIGINAL.txtに更新を加えたMODIFIED.txtを比較し
DELTA.rdiffという差分ファイルを作成します。

保存しておく必要があるものは元となるファイル(ORIGINAL.txt)と差分ファイル(DELTA.rdiff)の2つになります。

まぁこれだけではrdiffファイルが日に日に大きくなってしまいますので、
日時バッチでやるなら、ORIGINAL.txtは変更せずにSIGNATURE.sigを毎回差分を作る前に更新しておくと
rdiffを時系列順に作成することができます。

リストア方法

では実際に元となるファイルと差分ファイルを結合してみましょう。

rdiff patch ORIGINAL.txt DELTA.rdiff MODIFIED_REASSEMBLED.txt

元となるファイル(ORIGINAL.txt)と差分ファイル(DELTA.rdiff)を指定し、結合後の保存ファイル名を最後に指定します。
今回の例でいうとMODIFIED_REASSEMBLED.txt == MODIFIED.txtという事になります。

うまくシェルを組むことで、日時バッチでのバックアップがすごい便利になります。
シェルについては、また次回にしたいと思います。

Yoshi

一覧に戻る