きまぐれほげほげひろば

dumpbackup

このプログラムは、Linuxのext2/ext3ファイルシステムを、dumpコマンドを使用してバックアップを取得するシェルスクリプトです。

単にdumpコマンドを実行するだけでなく、実行前にnfs/cifsディレクトリをマウントできたり、ファイルシステムごとにdump実行前後に指定するスクリプトを実行できたりします。また、LVMを使用している場合はLVMスナップショットを実行して静止点を作成してからdumpコマンドを実行できます。

お手軽バックアップ管理ができるように、あまり重要ではないサーバでの使用を想定しています。エンタープライズなサーバーでの使用には機能的に不向きです。また、テープをバックアップイメージ格納先としたバックアップは想定していません。DtoDです。

このプログラムはbashスクリプトで実装されています。簡単に導入できます。

長い説明を読まずに、早くダウンロードしたい場合はこちら

  • dumpコマンドを使用してファイルシステムバックアップ
  • 静止点を作成してからバックアップ(LVM使用時のみ)
  • バックアップイメージを圧縮
  • バックアップ実施前にnfs/cifsディレクトリをマウント
  • ファイルシステムごとでバックアップ実行前後に指定するコマンドを実行
  • 指定する期間を経過したバックアップファイルを自動削除
dumpコマンドを使用したファイルシステムバックアップ

OS標準のdumpコマンドを使用してファイルシステムのバックアップを取得します。

バックアップ対象のデバイスファイル、バックアップイメージの格納先はリストファイルで指定できます。

このスクリプトで取得したバックアップイメージを使用してシステムをリカバリする方法についてはこちらを参照してください。(前述どおりdumpコマンドを使用してバックアップを取得していますので、restoreコマンドでリストアできます)

静止点を作成してからバックアップ(LVM使用時のみ)

LVM使用時のみ、dumpコマンド実行前にLVMスナップショットでLVの静止点を作成します。

バックアップ中にファイルシステム内のファイルの内容が書き換わっても、バックアップイメージの破損の心配はありません。また、LVMスナップショットは瞬間的に作成されるので、バックアップ取得時のサービス停止も瞬間的にすることができます。

バックアップイメージを圧縮

取得したバックアップイメージを圧縮することができます。(任意)

バックアップイメージに対する信頼性が多少下がりますが、圧縮することによりバックアップイメージの容量削減をすることができます。圧縮に使用するコマンドはgzipとbzip2とcompressから選択できます。

バックアップ実施前にnfs/cifsディレクトリをマウント

バックアップ実施前にnfs/cifsディレクトリをマウントすることができます。

これにより、リモートサーバのディスクにバックアップイメージを格納することが可能です。

ファイルシステムごとでバックアップ実行前後に指定するコマンドを実行

ファイルシステムごとに、バックアップ取得前と取得後それぞれにおいて、指定するコマンドを実行することができます。

例えば、データベースのデータを格納しているファイルシステムをバックアップする場合、バックアップ取得前にデータベースを停止し、バックアップ取得完了後にデータベースを起動する、といったことができます。

指定する期間を経過したバックアップファイルを自動削除

指定する日数を経過した過去のバックアップイメージファイルを自動削除します。

このプログラムはbashスクリプトですので、簡単にインストールできます。

以下にインストール手順を示します。

  1. ここからアーカイブをダウンロード
  2. ダウンロードしたアーカイブファイルを展開
  3. # tar zxvf dumpbackup_1.0.1.tar.gz
  4. 展開したディレクトリに移動
  5. # cd dumpbackup_1.0.1
  6. 設定値を変更します。ログ出力場所に注意してください。
  7. # vi dumpbackup.sh
  8. 任意の場所にコピーしてください。
  9. # cp ./dumpbackup.sh 任意の場所
  10. 権限の設定をしてください。
  11. # chmod 744 任意の場所/dumpbackup.sh
  12. バックアップリストファイルを作成してください
  13. # cp diskdump.lst 任意の場所/任意のファイル名.lst # vi 任意の場所/任意のファイル名.lst

このプログラムの実行方法について説明します

# ./dumpbackup.sh[ <バックアップリストファイルのパス>[ <バックアップファイル名のプレフィックス>[ <バックアップファイルの保管日数>]]]

以下のパラメータ(起動引数)は、省略時、スクリプト内で定義したデフォルト値を使用します。

バックアップリストファイルのパス

バックアップ対象のデバイスファイルおよびバックアップイメージの格納先などを定義したバックアップリストファイルのパスを指定します。

バックアップファイル名のプレフィックス

取得したバックアップイメージファイルのファイル名の先頭に付与する接頭句を指定します。バックアップの種類ごとに一意な文字列を指定してください。(バックアップイメージの自動削除で使用します)

バックアップファイルの保管日数

バックアップイメージを保管する日数を指定します。この日数を経過したバックアップイメージファイルはバックアップ実行後に削除されます。

実行例

# ./dumpbackup.sh
# ./dumpbackup.sh /path/to/dumpbackup.lst
# ./dumpbackup.sh /path/to/dumpbackup.lst daily
# ./dumpbackup.sh /path/to/dumpbackup.lst monthly 95

bklist_path_default

バックアップリストファイルを起動引数で指定しなかった時に、デフォルトで使用されるバックアップリストファイルのパス。

bkupdir_defalut

バックアップリストファイル内で、バックアップイメージファイル格納先を指定していなかったときに、デフォルトで使用されるバックアップイメージファイル格納ディレクトリのパス。

bkupimg_prefix_default

バックアップイメージファイルのプレフィックスを起動引数で指定しなかった時に、デフォルトで使用されるバックアップイメージファイルのプレフィックス。

mountdir

バックアップ格納先にNFSまたはCIFS(SMB・Windowsファイル共有)を使用する場合に、その格納先をマウントするリモートサーバのパス(このスクリプトを実行するサーバから見た)を指定します。ローカルに格納する場合は空にします。

mounteddir

バックアップ格納先にNFSまたはCIFS(SMB・Windowsファイル共有)を使用する場合に、その格納先をマウントさせるローカルのパス(マウントポイント)を指定します。ローカルに格納する場合は空にします。

mountoption

mountコマンドのオプションを指定します。NFSやCIFSの認証などはここで指定してください。

snaplvname

LVMスナップショットを使用する場合は、ここにスナップショット用論理ボリュームの名前を指定してください。使用しない場合は空にしてください。

snaplvsize

LVMスナップショットを使用する場合は、ここにスナップショット用論理ボリュームのサイズを指定してください。ファイルシステムのバックアップ中(dump中)にここで指定したサイズ以上の変更があると、変更側でエラーになります。

deldays_default

バックアップイメージファイルの保管日数を起動引数で指定しなかった時に、デフォルトで使用されるバックアップイメージファイルの保管日数。

execlog

実行ログを記録するファイルパスを指定します。

dummyecho

通常は空にしてください。この項目に"echo"を指定して実行すると、実行するコマンドを標準出力に表示するだけで実際に実行しません(いわゆるデバッグモードです)。

バックアップ対象デバイスパス バックアップイメージ名 バックアップイメージ格納ディレクトリ 圧縮に使用するコマンド バックアップ前実行コマンドパス バックアップ後実行パス
  • 実際には1ファイルシステムごとに一行(改行なし)で記入
  • 複数行定義可能(複数ファイルシステム)

バックアップ対象デバイスパス

バックアップするファイルシステムが乗っているパーティションまたはLVM論理ボリュームのデバイスファイルパスを指定します。

バックアップイメージ名

取得したバックアップイメージにつけるファイル名のベース部分を指定します。

バックアップイメージ格納ディレクトリ

取得したバックアップイメージを格納(保存)するディレクトリを指定します。

圧縮に使用するコマンド(省略可能)

取得したバックアップイメージを圧縮するために使用するコマンドを指定します。「gzip」「bzip2」「compress」から選択できます。圧縮したくない場合は「none」を指定してください。省略時は圧縮しません。

バックアップ前実行コマンドパス(省略可能)

ファイルシステムのバックアップ前に実行するコマンドのパスを指定します。仕様により引数を指定できません。また実行するコマンドの正常終了時には戻り値0を返却するようにしてください。実行しない場合は「echo」を指定してください。

バックアップ後実行コマンドパス(省略可能)

ファイルシステムのバックアップ後に実行するコマンドのパスを指定します。仕様により引数を指定できません。また実行するコマンドの正常終了時には戻り値0を返却するようにしてください。

/dev/sda1 sda1-boot /mnt/landisk/server_bkup /dev/rootvg/rootlv rootvg-rootlv-root /mnt/landisk/server_bkup gzip /dev/rootvg/varlv rootvg-varlv-var /mnt/landisk/server_bkup gzip /dev/rootvg/dbdatalv rootvg-dbdatalv-dbdata /mnt/landisk/server_bkup gzip /app/batch/system/bin/prebackup_stopdatabase.sh /app/batch/system/bin/postbackup_startdatabase.sh
  • このスクリプトの使用により、いかなる損害等が発生したとしても私は責任を負いません。自己責任でご使用ください。
  • ちょっとした空き時間に作ったので、作りこみ不足感があります。その部分はお許しください。
ver1.0.0 (2010/01/01)
  • 初版リリース
何かありましたら以下のメールアドレスまで。(自宅サーバーのため届かない可能性があります。多忙のため100%返信するとは限りません(しなくてもごちゃごちゃいわないでください)) webmaster@chidipy.jpn.com
戻る