dumpbackup
このプログラムの概要
このプログラムは、Linuxのxfs/ext2/ext3/ext4ファイルシステムを、xfsdump/dumpコマンドを使用してバックアップを取得するシェルスクリプトです。
単にxfsdump/dumpコマンドを実行するだけではありません。このプログラムはバックアップ実行前にnfs/cifsディレクトリをマウントできたり、ファイルシステムのバックアップ前後に指定するスクリプトを実行できたりします。また、LVMを使用している場合はLVMスナップショットを実行して静止点を作成してからxfsdump/dumpコマンドを実行できます。EFIシステムパーティションはtarコマンドでバックアップ取得します。
お手軽バックアップ管理を実現することを重視していますので、重要ではないサーバでの使用を想定しています。エンタープライズなサーバーでの使用には機能的に不向きです。また、バックアップイメージ格納先はディスクを想定しています。
このプログラムはbashスクリプトで実装されています。よって簡単に導入できます。
機能の説明
機能の一覧
- xfsdump または dumpコマンドを使用してファイルシステムバックアップ
- EFIシステムパーティションはtarコマンドを使用してバックアップ
- 静止点を作成(スナップショット)してからバックアップ(LVM使用時のみ)
- バックアップイメージを圧縮
- バックアップ実施前にnfs/cifsディレクトリをマウント
- ファイルシステムごとでバックアップ実行前後に指定するコマンドを実行
- 指定する期間を経過したバックアップファイルを自動削除
- リストアに必要な情報の取得
機能の説明とメリット
- dumpコマンドを使用したファイルシステムバックアップ
-
xfsdump または dumpコマンドを使用してファイルシステムのバックアップを取得します。
バックアップ対象のデバイスファイル、バックアップイメージの格納先はリストファイルで指定できます。
このスクリプトで取得したバックアップイメージを使用してext2/ext3/ext4ファイルシステムをリカバリする方法についてはこちらを参照してください。(前述どおりdumpコマンドを使用してバックアップを取得していますので、restoreコマンドでリストアできます)
このスクリプトで取得したバックアップイメージを使用してxfsファイルシステムをリカバリする方法についてはこちらを参照してください。(前述どおりxfsdumpコマンドを使用してバックアップを取得していますので、xfsrestoreコマンドでリストアできます)
- EFIシステムパーティションはtarコマンドを使用してバックアップ
-
vfatファイルシステムで作成されたEFIファイルシステムはtarコマンドでバックアップを取得します。
- 静止点を作成してからバックアップ(LVM使用時のみ)
-
LVM使用時のみ、xfsdump/dumpコマンド実行前にLVMスナップショットでLVの静止点を作成します。
バックアップ中にファイルシステム内のファイルの内容が書き換わっても、バックアップイメージの破損の心配はありません。また、LVMスナップショットは瞬間的に作成されるので、バックアップ取得時のサービス停止も瞬間的にすることができます。
- バックアップイメージを圧縮
-
取得したバックアップイメージを圧縮することができます。(任意)
バックアップイメージに対する信頼性が多少下がりますが、圧縮することによりバックアップイメージの容量削減をすることができます。圧縮に使用するコマンドはgzipとbzip2とcompressから選択できます。
- バックアップ実施前にnfs/cifsディレクトリをマウント
-
バックアップ実施前にnfs/cifsディレクトリをマウントすることができます。
これにより、リモートサーバのディスクにバックアップイメージを格納することが可能です。
- ファイルシステムごとでバックアップ実行前後に指定するコマンドを実行
-
ファイルシステムごとに、バックアップ取得前と取得後それぞれにおいて、指定するコマンドを実行することができます。
例えば、データベースのデータを格納しているファイルシステムをバックアップする場合、バックアップ取得前にデータベースを停止し、バックアップ取得完了後にデータベースを起動する、といったことができます。
- 指定する期間を経過したバックアップファイルを自動削除
-
指定する日数を経過した過去のバックアップイメージファイルを自動削除します。
- リストアに必要な情報の取得
-
システムリストア時に必要となるパーティション、マウント、LVMに関する情報を取得します。
インストール手順
このプログラムはbashスクリプトですので、簡単にインストールできます。
以下にインストール手順を示します。
- dumpコマンドをインストール
- xfsdumpコマンドをインストール
- ここからアーカイブをダウンロード
- ダウンロードしたアーカイブファイルを展開
- 展開したディレクトリに移動
- 設定値を変更します。ログ出力場所に注意してください。
- 任意の場所にコピーしてください。
- 権限の設定をしてください。
- バックアップリストファイルを作成してください
- (オプション)スケジュール実行の設定をしてください。
# dnf install dump
# dnf install xfsdump
# tar zxvf dumpbackup_2.0.0.tar.gz
# cd dumpbackup_2.0.0
# vi dumpbackup.sh
# cp ./dumpbackup.sh 任意の場所
# chmod 700 任意の場所/dumpbackup.sh
# cp diskdump.lst 任意の場所/任意のファイル名.lst
# vi 任意の場所/任意のファイル名.lst
# vi /etc/cron.d/dumpbackup
0 0 * * 0 root 任意の場所/dumpbackup.sh
実行方法
このプログラムの実行方法について説明します
# ./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ファイル共有)を使用する場合に、その格納先をマウントするリモートサーバのパス(このスクリプトを実行するサーバから見た)を指定します。ローカルに格納する場合は空にします。
Windows系パスを指定する場合は「\」の代わりに「/」を使用してください(例:\\192.168.1.1\share → //192.168.1.1/share)
- mounteddir
-
バックアップ格納先にNFSまたはCIFS(SMB・Windowsファイル共有)を使用する場合に、その格納先をマウントさせるローカルのパス(マウントポイント)を指定します。ローカルに格納する場合は空にします。
- mountoption
-
mountコマンドのオプションを指定します。NFSやCIFSの認証などはここで指定してください。
- snaplvname
-
LVMスナップショットを使用する場合は、ここにスナップショット用論理ボリュームの名前を指定してください。LVMスナップショットを使用しない場合は空にしてください。
- snaplvsize
-
LVMスナップショットを使用する場合は、ここにスナップショット用論理ボリュームのサイズを指定してください。ファイルシステムのバックアップ中(dump中)にここで指定したサイズ以上のファイル更新があると、更新側でエラーになります。
- deldays_default
-
バックアップイメージファイルの保管日数を指定します。起動引数で保管日数を指定した場合はその値で上書きされます。
- execlog
-
実行ログを記録するファイルパスを指定します。
- dummyecho
-
通常は空にしてください。この項目に"echo"を指定して実行すると、実行するコマンドを標準出力に表示するだけで実際に実行しません(いわゆるデバッグモードです)。
バックアップリストファイルの説明
バックアップリストファイルの書式
- 各項目はタブ文字区切り。連続するタブ文字は空値として認識
- 実際には1ファイルシステムごとに一行(改行なし)で記入
- 複数行定義可能(複数ファイルシステム)
バックアップリストファイルの項目説明
- バックアップ対象デバイスパス
-
バックアップするファイルシステムが乗っているパーティションまたはLVM論理ボリュームのデバイスファイルパスを指定します。
- ファイルシステム名
-
ファイルシステム名を次の中から指定します。xfs ext2 ext3 ext4 vfat。
xfsはxfsdump、ext2/ext3/ext4はdump、vfatはtarを使用してバックアップを取得します。
- バックアップイメージ名
-
取得したバックアップイメージにつけるファイル名のベース部分を指定します。
- バックアップイメージ格納ディレクトリ
-
取得したバックアップイメージを格納(保存)するディレクトリを指定します。
- 圧縮に使用するコマンド(省略可能)
-
取得したバックアップイメージを圧縮するために使用するコマンドを指定します。「gzip」「bzip2」「compress」から選択できます。圧縮したくない場合は「none」を指定してください。省略時は圧縮しません。
- バックアップ前実行コマンドパス(省略可能)
-
ファイルシステムのバックアップ前に実行するコマンドのパスを指定します。仕様により引数を指定できません。また実行するコマンドの正常終了時には戻り値0を返却するようにしてください。実行しない(バックアップ後実行コマンドのみ実行する)場合は「echo」を指定してください。
- バックアップ後実行コマンドパス(省略可能)
-
ファイルシステムのバックアップ後に実行するコマンドのパスを指定します。仕様により引数を指定できません。また実行するコマンドの正常終了時には戻り値0を返却するようにしてください。
バックアップリストファイルの例
/boot/efi vfat boot-efi /mnt/landisk/server_bkup
/dev/sda1 ext4 sda1-boot /mnt/landisk/server_bkup
/dev/rootvg/rootlv xfs rootvg-rootlv-root /mnt/landisk/server_bkup gzip
/dev/rootvg/varlv xfs rootvg-varlv-var /mnt/landisk/server_bkup gzip
/dev/rootvg/dbdatalv xfs rootvg-dbdatalv-dbdata /mnt/landisk/server_bkup gzip /path/to/bin/prebackup_stopdatabase.sh /path/to/bin/postbackup_startdatabase.sh