Windows系で圧縮と世代管理出来るバッチの作り方

スポンサーリンク

MySQLのデータをWindows系サーバで圧縮して世代管理まで出来るようにするってお題が出たので作りました。

当初、BunBackUPを利用していたのですが、MySQLをUNICODEにしたら圧縮でこけるようになりまして、調べたらUNICODEには対応していないそうです。

というわけでグーグル先生を頼りに作ってみました。

【注意】

圧縮を7zipで行っているので7zipのコマンドラインバージョンを配置しておいてください。こっからどうぞ

世代管理の方法は古いフォルダを削除する方式で行ってます。一番初めに実行する時は古い日付のフォルダを世代分用意してください。

::処理日付取得
set BKUPDATE=%date:/=%

::ルートディレクトリ
set DIRROOT=【バックアップフォルダ】

::tempディレクトリパス
set DIRTEMP=【テンポラリーフォルダ】

::バックアップターゲットディレクトリ
set DIRBKTARGET=【バックアップ元となるフォルダ】

::tempディレクトリがなければ作る
mkdir %DIRTEMP%

::世代管理用に日付でディレクトリ作成
mkdir %DIRROOT%\%BKUPDATE%

::MySQLのフォルダをコピー(全部コピーする)
xcopy /y /e %DIRBKTARGET% %DIRTEMP%

::圧縮実行前に圧縮元ディレクトリを選択
cd /d %DIRTEMP%

::7zipで圧縮
C:\tools\7za\7za.exe a F:\Backup\%BKUPDATE%\%BKUPDATE%.zip

::tempディレクトリの中を削除しておきましょう
rmdir /s /q %DIRTEMP%

::世代管理用フォルダの一番古いフォルダを削除する
::『注意』バックアップを最初にやる時は必ず古い日付(yyyymmdd)の空フォルダを世代分作成する
cd /d %DIRROOT%
if %ERRORLEVEL%==0 for /f %%D in ('dir /b /ad %DIRROOT%') do rd /s /q %DIRROOT%\%%D  goto :eof

 後はお好きなようにタスクスケジューラにぶち込んでください。

コメント