WordPressのバックアップ!

Updated:


まず、当方のサーバではバックアップを1日1回以下のようにしています。 (サーバにあまり負荷(たいした負荷でもないけど)をかけたくないので、1日1回にしてます)

Fedora10サーバ側でバックアップスクリプトを1日1回定期実行させ、圧縮ファイル(tar.bz2ファイル)を作成。 その圧縮ファイルをメインマシン(WinXP)起動中の定時(タスク登録)にFTPダウンロードしてメインマシンに保存。 (メインマシン起動時はいろんな処理が動くので、起動時にしていないのです)

( 参照:Fedoraで自宅サーバー構築 ) サーバの保存フォルダは/home, /root, /var/www。 その他DB(MySQL)(WordPress用も含んでます)もバックアップ用フォルダにコピー後、上記のフォルダと一緒に圧縮してます。 (ブログ用のDBはWordPressのプラグイン(wp-DBManager)も使用しています)

ところが、上記のような日々のバックアップとは別に、ブログのデザイン等変更後すぐにローカル(メインマシン)にバックアップをとってみようと思い、バッチファイルを作成しました。 バッチファイルの実行で即バックアップできるので、便利です。

内容は、 ローカルにFFFTPで対象のフォルダ(ここでは”wordpress”)を丸ごとFTPダウンロード後、圧縮ツールで圧縮保存。 (FFFTP側であらかじめダウンロードの設定をしておく必要があります) (圧縮ファイル名はwordpress_YYYYMMDD_HHMMSS.LZH) ログファイルも出力しています。

以下ご覧ください。 (各種フォルダ名は適宜変更してください)

[ BAK_WORDPRESS.bat ]

@REM ***********************************
@REM *  BAK_WORDPRESS.bat              *
@REM *  Created By *****         *
@REM *          at 2009/99/99          *
@REM ***********************************

@TITLE ■ Backup WordPress ... 

@REM **** 環境変数設定(バックアップデータ保存先,圧縮ファイル保存先,LOGファイル)
@SET BAK_DATA=D:\00_MyDocuments\01_WWW\wordpress
@SET BAK_LZH=D:\20_BAK\BAK_Noah\wordpress\
@SET LOGFILE=D:\03_Bat\Log\BAK_WORDPRESS.log
@SET BAKDATE=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%
@SET BAKTIME=%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%
@IF "%TIME:~0,1%"==" " SET BAKTIME=0%TIME:~1,1%%TIME:~3,2%%TIME:~6,2%

@ECHO ■■■■ BACKUP START [ %BAKDATE% %BAKTIME% ] ■■■■ >> %LOGFILE%

@REM **** FFFTPにて一括ダウンロード
@C:\PROGRA~1\FFFTP\FFFTP.exe -s "BAK_WORDPRESS" -d -f -q

@REM **** 環境変数設定(バックアップファイル名に使用)
@SET BAKDATE=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%
@SET BAKTIME=%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%
@IF "%TIME:~0,1%"==" " SET BAKTIME=0%TIME:~1,1%%TIME:~3,2%%TIME:~6,2%

@REM **** 圧縮保存
@C:
@CD "C:\Program Files\ArchiverDll\UNLHA32"
C:\PROGRA~1\UNDLL\UNLHA32 a -rd %BAK_LZH%wordpress_%BAKDATE%_%BAKTIME% %BAK_DATA%\ *.*
@IF NOT ERRORLEVEL==0 GOTO :BAK_ERR

:BAK_END
@SET BAKDATE=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%
@SET BAKTIME=%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%
@IF "%TIME:~0,1%"==" " SET BAKTIME=0%TIME:~1,1%%TIME:~3,2%%TIME:~6,2%
@ECHO ■■■■ BACKUP E N D [ %BAKDATE% %BAKTIME% ] ■■■■(正常終了) >> %LOGFILE%
@ECHO. >> %LOGFILE%
@IF %1==1 SHUTDOWN -s -t 10
@EXIT /B

:BAK_ERR
@SET BAKDATE=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%
@SET BAKTIME=%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%
@IF "%TIME:~0,1%"==" " SET BAKTIME=0%TIME:~1,1%%TIME:~3,2%%TIME:~6,2%
@ECHO ■■■■ BACKUP E N D [ %BAKDATE% %BAKTIME% ] ■■■■(異常終了) >> %LOGFILE%
@ECHO [ ERRORLEVEL = %ERRORLEVEL% ] >> %LOGFILE%
@ECHO. >> %LOGFILE%
@EXIT /B

  • フォルダ丸ごとコマンドラインでダウンロードするにはどうしたらよいか、いろいろ模索していたら、なんと手元のFFFTPでできるではないですか。 ( 参照: FFFTPオンラインヘルプ − コマンドライン )

  • 圧縮ツールは普段GUI使用している圧縮・解凍ツールと別にコマンドラインでも使えるものを以前から使っていたので、それを使用。 ( 参照: コマンドライン圧縮ツールについては こちら

  • 日時付きの圧縮ファイルとしているのは、FTPダンロードがミラーリングダウンロードなので、過去のデータが消えてしまわないように別ファイル名で保存しているのです。 圧縮ファイルが貯まりすぎたら、古い圧縮ファイルから削除していきます。

メインマシンのバックアップも上記のような方法で昔からやっています。 (バックアップ先を別マシン(当方ではNAS(玄箱)です)にして)

ちなみに、僕は以前SEをしていたので、そこで培ったBAT知識を応用させてもらってます。

このバッチファイルについて、何かご質問があれば聞いてください。





 

Sponsored Link

 

Comments