日時でdump_all等で取得してネットワーク越しにバックアップを取る際
最初のうちはよいですが、データが多くなってくると時間は掛かるし・・帯域は結構使うし・・バックアップ要領も結構使うし・・・。
という事がよくあると思います。
差分で必要分だけバックアップして、リストアする時に結合してバックアップできたら最高だと思いませんか!?
というわけで今回は差分バックアップをご紹介します。
rdiffではzipファイル等の圧縮ファイルでもDB(postgresql,mysql等)のdumpデータでも全て差分で取得できるので
日時バックアップに非常に便利です。
rdiffが入っていない場合は、まずrdiffをインストールする必要があります。
簡単ですので下記のコマンドを入力しましょう。
# 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
バックアップ方法
ベースの作成
まず元となるデータのベースを作成します。
※毎回バックアップの前に最新のベースを作成する必要があります。
SIGNATURE.sigがORIGINAL.txtのベース部分になります。
要はSIGNATURE.sigと新しいデータを比較して、差分を作成していくことになります。
差分の作成
現在のベースとなるSIGNATURE.sigとORIGINAL.txtに更新を加えたMODIFIED.txtを比較し
DELTA.rdiffという差分ファイルを作成します。
保存しておく必要があるものは元となるファイル(ORIGINAL.txt)と差分ファイル(DELTA.rdiff)の2つになります。
まぁこれだけではrdiffファイルが日に日に大きくなってしまいますので、
日時バッチでやるなら、ORIGINAL.txtは変更せずにSIGNATURE.sigを毎回差分を作る前に更新しておくと
rdiffを時系列順に作成することができます。
リストア方法
では実際に元となるファイルと差分ファイルを結合してみましょう。
元となるファイル(ORIGINAL.txt)と差分ファイル(DELTA.rdiff)を指定し、結合後の保存ファイル名を最後に指定します。
今回の例でいうとMODIFIED_REASSEMBLED.txt == MODIFIED.txtという事になります。
うまくシェルを組むことで、日時バッチでのバックアップがすごい便利になります。
シェルについては、また次回にしたいと思います。
Yoshi