スクリプト改良

昨日、WordPressをバックアップするための
スクリプトを貼ったばかりなんだけど、
かなり改良したから、もう1回貼っておく!

wp-backup2

いやーこういうのって、やり始めると、
納得のいくところまで完成しないと、
気になって他のことに手が付かなくなって^^;

沢山変わった場所があるけど、特に大きく変わった点を。
変わってないところは、昨日の記事を参照。

# rsync パス
RSYNC_PATH=`which rsync 2>/dev/null`
# mysqldump パス
MYSQLDUMP_PATH=`which mysqldump 2>/dev/null`
# mysql パス
MYSQL_PATH=`which mysql 2>/dev/null`

パスが通っていない可能性のあるコマンドだけ宣言しておくことに。
ソースから入れたりしたときとか。

# 1でディレクトリの処理無効
DISABLE_DIR=0
# 1でデータベースの処理無効
DISABLE_DB=0

それぞれ片方だけの処理も可能にして、
WordPress以外でも使い勝手がよくしてみた。

# mysqldumpのオプション
DB_DUMP_OPT="--databases --add-drop-database --lock-all-tables"

ダンプ出力時のオプションも設定可能に。
databaseの生成コマンドを出力したくない場合とか、
色々と状況に応じて変えられるようにと思ってー

# リモート側の mv コマンド
R_MV_CMD="/bin/mv -f"
# リモート側の rm コマンド
R_RM_CMD="/bin/rm -f"
# リモート側の cat コマンド
R_CAT_CMD=/bin/cat
# リモート側の zcat コマンド
R_ZCAT_CMD=/bin/zcat

リモート側で使用するコマンドを設定できるように。
もし相手がLinux以外の環境だったとしても、
ここを弄れば対応できるかもしれない。(願望)

# 引数を解析
OPT=`getopt -q -o dhr: -l day,hour,test,restore:,src-dir:,dst-dir:,db-dump-file:,rsync-exclude-list:,db-sock:,db-host:,db-port:,db-user:,db-password:,db-name:,ssh-host:,ssh-key:,disable-dir,disable-db -- "$@"` ; [ $? != 0 ] && usage && exit 1

引数の解析にgetoptコマンドを使用するようにして、
引数で各パラメータを設定が出来るようにしておいた。
これで共通部分(DBとかSSHとか)だけ設定したスクリプトを用意して、
引数を変えるだけで、様々なバックアップが取れて、更に便利に!

そして1番大きな変更が、リストア処理に対応!
それに合わせて、ちゃんと処理を関数に切り出して整理したー

あと昨日、mysqldump実行時に変な警告が出ちゃって、
cronで動かすときにメールが常に届いちゃうから、
/dev/nullに出力させて誤魔化したんだけど、
/dev/nullじゃなくて一時ファイルに出力させて、
実際にダンプに失敗したときだけ、
そのファイルをエラー出力へ出すようにして解決しといたー

で、使用方法の例。

wp-backup --hour

↑スクリプトに設定されてる内容で1時間毎のバックアップを実行。

wp-backup --restore "-Wed"

↑バックアップ先の水曜日のデータでリストア。

wp-backup --src-dir "/root/test" --dst-dir="/mnt/backup/test" --db-dump-file="/mnt/backup/test-db" --db-name "test"

↑引数でバックアップの設定を指定した場合。

wp-backup --src-dir "/root/test" --dst-dir="/mnt/backup/test" --db-dump-file="/mnt/backup/test-db" --restore "" --db-user "root" --db-password "dummy" --db-name ""

↑今度はリストア。
スクリプトに設定してあるMySQLのユーザーの権限が足りなくて、
仕方なくrootユーザーを指定してみたり。
あと、ダンプのオプションに「--databases」を付けていて、
復元するサーバに対象の名前のデータベースがなければ
「--db-name “”」でデータベース名を消しておかないとエラーが出た。

これで、cronに登録する内容を変えるだけで、
WordPress以外にも色々とバックアップが取れそうだなー

因みに、このスクリプトを使うのは自由ですが、
何があっても自己責任でお願いしますm(_ _)m
軽くしか試してないので、極めて怪しいです。
実行する前に「--test」を指定して、
実際に実行されるコマンドが正しいかどうか、
確認しておくことを強くオススメ。

あと動作がおかしいとか、コードがおかしいや、
「こういうのは出来ないの?」とかあれば、
教えて頂けると嬉しいですー

じゃ、ゲームして寝るー
バイニー☆

test?

スクリプト改良」への1件のフィードバック

  1. ピンバック: WordPressバックアップスクリプト | みつ(@@@)の雑記

コメントを残す