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

投稿者: | 2012年10月13日

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

 

 

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください