定時バックアップ on Windows
UNIX系OSなら、cronとかでスクリプトを走らせれば良いので簡単です。Windowsの場合のやり方が見つからなかったので、作ってみました。コマンドプロンプトが出るのが気に入らないので、何とかしたいです。
@ITのバッチ・ファイル中で日付をファイル名に使用するを参考にしました。
バックアップをずっと保存
@echo off set day=%date:~0,4%%date:~5,2%%date:~8,2% "C:\Program Files\PostgreSQL\8.1\bin\pg_dump.exe" -U postgres -F c -f "C:\backup\pg-%day%.backup" postgres "C:\Program Files\PostgreSQL\8.1\bin\vacuumdb.exe" -U postgres -a -z -q
このバッチファイルを、C:\Program Files\PostgreSQL\taskにでも置いて、スタート→プログラム→アクセサリ→システムツール→タスクに、日単位で03:00くらいで登録。
pg-20060408.backupってファイルにバックアップが取られます。ついでに、VACUUM ANALYZEします。
バックアップを1ヶ月分だけ保存
@echo off set day=%date:~8,2% "C:\Program Files\PostgreSQL\8.1\bin\pg_dump.exe" -U postgres -F c -f "C:\backup\pg-%day%.backup" postgres "C:\Program Files\PostgreSQL\8.1\bin\vacuumdb.exe" -U postgres -a -z -q
pg-08.backupって感じになって先月分の同名ファイルを上書きします。30日の月や2月は来月まで残っちゃうけどね。
バックアップを1週間だけ保存
@echo off cscript /b "C:\Program Files\PostgreSQL\task\wday.vbs" if %errorlevel%==7 set day=SAT if %errorlevel%==6 set day=FRI if %errorlevel%==5 set day=THU if %errorlevel%==4 set day=WED if %errorlevel%==3 set day=TUE if %errorlevel%==2 set day=MON if %errorlevel%==1 set day=SUN "C:\Program Files\PostgreSQL\8.1\bin\pg_dump.exe" -U postgres -F c -f "C:\backup\pg-%day%.backup" postgres "C:\Program Files\PostgreSQL\8.1\bin\vacuumdb.exe" -U postgres -a -z -q
wday.vbsの内容は、1行だけ。
WScript.Quit(WeekDay(Date))
pg-SAT.backupって感じになって先週分の同名ファイルを上書きします。