サーバー自体のバックアップとは別にWordPressの設定、データベースのバックアップを定期的に行う。
設定ファイル等はrobocopyで存在するファイルのみ新しいものをコピーする。
データベースは、SQLファイルとして毎日1回出力する。
サーバー上に保存するとインスタンスを削除したときに消えてしまうのでローカルPCに保存する。そのため、リモート接続を行ったときにのみ行うこととした。
あらかじめローカルPCにはバックアップしたい設定ファイル等のファイルを同じ階層構造でコピーしておく。
システム環境変数にローカルPCのフォルダーパスを定義しておく。
WORDPRESS_BACKUP=\\tsclient\C\Backup
ローカルPCにファイルを保存するため、タスクスケジューラーでリモートデスクトップ接続したときに実行するように設定しておく。その際、ローカルリソースのCドライブを利用することを指定している。



Backup.bat
@echo off
echo %DATE%-%TIME: =0% : Excecuting ... %0 %*
rem DATEの出力で、先頭に曜日が漢字一文字で表示されることがある。
rem その場合は設定-時計と言語-日付と時刻-日付と時刻の形式を変更するで、
rem 日付(短い形式)でyyyy/MM/ddを選ぶと曜日が出力されなくなるようだ。
rem OSのバージョンによっては、設定-時刻と言語-日付と時刻-日付、時刻、地域の書式設定-データ形式を変更する
if not "%1" == "" goto :BACKUP
setlocal
if not exist %~d0%~p0log mkdir %~d0%~p0log
set LOG_FILE=%~d0%~p0log\%COMPUTERNAME%_Backup_%date:~-10,4%-%date:~-5,2%-%date:~-2,2%.log
if "%WORDPRESS_BACKUP%" == "" (
    echo no backup placement >> %LOG_FILE% 2>&1
    echo set WORDPRESS_BACKUP=xxx >> %LOG_FILE% 2>&1
    endlocal
    EXIT /B
)
if not exist %LOG_FILE% (
    rem ログファイルへ出力するため、あえてファイルを通して呼び出す
    for %%f in (ProgramData Squid xampp) do call %0 %%f >> %LOG_FILE% 2>&1
    call BackupMySQL.bat >> %LOG_FILE% 2>&1
)
endlocal
EXIT /B
:BACKUP
setlocal
if exist \%1 (
  if not "%WORDPRESS_BACKUP%" == "" (
      echo robocopy  \%1 %WORDPRESS_BACKUP%\%1 /S /XJ /XO /XX /XL /NP
      robocopy  \%1 %WORDPRESS_BACKUP%\%1 /S /XJ /XO /XX /XL /NP
  )
)
endlocal
EXIT /B
時刻が%TIME: =0%となっているのは、10:00より前は10時台が0サプレスされるのでスペースを0に置き換えている。
BackupMySQL.bat
@echo off
echo %DATE%-%TIME: =0% : Excecuting ... %0 %*
rem MAX_FILES 残す個数
setlocal
set /a MAX_FILES=0
if not "%1" == "" set /a MAX_FILES=%1
for %%i in (wp-01 wp-02) do call :MYSQLDUMP %%i %MAX_FILES%
endlocal
EXIT /B
:MYSQLDUMP
setlocal
if not exist %~d0%~p0MySQL mkdir %~d0%~p0MySQL
set SQL_FILE=%~d0%~p0MySQL\%COMPUTERNAME%_%1_%date:~-10,4%-%date:~-5,2%-%date:~-2,2%.sql
if not exist %SQL_FILE% (
    echo C:\xampp\mysql\bin\mysqldump -u -p %1
    C:\xampp\mysql\bin\mysqldump -u ユーザー名 -pパスワード %1 > %SQL_FILE%
    if not "%WORDPRESS_BACKUP%" == "" (
        if not exist %WORDPRESS_BACKUP%\xampp\Tools\MySQL mkdir %WORDPRESS_BACKUP%\xampp\Tools\MySQL
        echo copy /Y %SQL_FILE% %WORDPRESS_BACKUP%\xampp\Tools\MySQL\
        copy /Y %SQL_FILE% %WORDPRESS_BACKUP%\xampp\Tools\MySQL\
    )
)
endlocal
EXIT /B
mysqldumpのパスワード指定は、-pの後に空白を開けず続けて指定する。