Trac Lightning 用のSubversion世代バックアップバッチを作ってみた

2017年10月19日Trac Lightning,ソフトウェア

おはようございます。

今日は Trac Lightning のプロジェクトデータと
Subversion の データを世代バックアップするバッチを作ったので
とりあえず公開します。

あまり需要はないかもしれませんが。。

スポンサーリンク

バッチファイル

次のファイルをTracのホーム配下のbatchディレクトに作成し、
タスクスケジューラに登録します。

trac_backup.bat

@ECHO OFF
REM ==============================================
REM バックアップ設定
REM 環境に合わせて変更してください
REM ==============================================
REM バックアップ保持日数(世代数)
SET DAYS=7
REM TRACホームのパスを設定
SET TRAC_HOME=C:\TracLight
REM バックアップ先
SET BACKUP_HOME=C:\#backup\Trac

REM ==============================================
REM その他変数
REM ==============================================
REM バッチ実行パス
SET EXEC_HOME=%~dp0
REM 本日日付
SET YMD=%DATE:~-10,4%%DATE:~-5,2%%DATE:~-2,2%
REM プロジェクトディレクトリ
SET PRJ_DIR=%TRAC_HOME%\projects
REM バックアップファイル出力先
SET BACK_DIR=%BACKUP_HOME%\%YMD%\projects
REM ログ出力先
SET LOG_FILE=%EXEC_HOME%\log\trac_backup_%YMD%.log

REM -----------------------------
REM 実行日付から
REM 保持世代数を引いた日付を計算
REM -----------------------------
SET FROM_YMD=
ECHO WScript.ECHO DateAdd("d", -%DAYS%, Date()) > tmp.vbs
FOR /f "tokens=1-3 delims=/-" %%A in ('cscript //nologo tmp.vbs') DO SET FROM_YMD=%%A%%B%%C
DEL tmp.vbs

REM -----------------------------
REM 処理開始
REM -----------------------------
ECHO %DATE% %TIME% [INFO] TracLightデータバックアップ開始 > %LOG_FILE%

REM -----------------------------
REM 過去データ削除
REM -----------------------------
ECHO %DATE% %TIME% [INFO] 過去データ削除処理開始 >> %LOG_FILE%
FOR /d %%i IN (%BACKUP_HOME%\*) DO (
IF %%~ni LEQ %FROM_YMD% (
ECHO %DATE% %TIME% [INFO] 下記のデータを削除します。 >> %LOG_FILE%
ECHO %DATE% %TIME% [INFO] %BACKUP_HOME%\%%~ni >> %LOG_FILE%
RMDIR /s /q %%i
)
)
ECHO %DATE% %TIME% [INFO] 過去データ削除処理完了 >> %LOG_FILE%

REM -----------------------------
REM バックアップ
REM -----------------------------
ECHO %DATE% %TIME% [INFO] バックアップ処理開始 >> %LOG_FILE%

REM 既にバックアップがあれば削除
IF EXIST %BACK_DIR% (
RMDIR /S /Q %BACK_DIR%
)

REM フォルダ作成
MKDIR %BACK_DIR%\trac
MKDIR %BACK_DIR%\svn

REM Trac、SVNのホットコピー
FOR /d %%i IN (%PRJ_DIR%\trac\*) DO ( 
        ECHO %DATE% %TIME% [INFO] Backup Project: %%~ni >> %LOG_FILE%
        CALL %TRAC_HOME%\bin\trac-admin.bat %PRJ_DIR%\trac\%%~ni hotcopy %BACK_DIR%\trac\%%~ni
        CALL svnadmin hotcopy %PRJ_DIR%\svn\%%~ni %BACK_DIR%\svn\%%~ni
)

REM その他フォルダ、ファイルのc
ECHO COPY %PRJ_DIR%\trac.htdigest %BACK_DIR% >> %LOG_FILE%
ECHO COPY %PRJ_DIR%\svnauthz %BACK_DIR% >> %LOG_FILE%
ECHO XCOPY /E /C /H %PRJ_DIR%\maven %BACK_DIR% >> %LOG_FILE%
ECHO XCOPY /E /C /H %PRJ_DIR%\report %BACK_DIR% >> %LOG_FILE%
ECHO XCOPY /E /C /H %PRJ_DIR%\hudson %BACK_DIR% >> %LOG_FILE%

COPY %PRJ_DIR%\trac.htdigest %BACK_DIR%
COPY %PRJ_DIR%\svnauthz %BACK_DIR%
XCOPY /E /C /I /Q /Y %PRJ_DIR%\maven %BACK_DIR%\
XCOPY /E /C /I /Q /Y %PRJ_DIR%\report %BACK_DIR%\
XCOPY /E /C /I /Q /Y %PRJ_DIR%\hudson %BACK_DIR%\

ECHO %DATE% %TIME% [INFO] %BACKUP_HOME%\%YMD%にコピーしました。 >> %LOG_FILE%
ECHO %DATE% %TIME% [INFO] バックアップ処理終了 >> %LOG_FILE%


REM -----------------------------
REM 終了処理
REM -----------------------------
ECHO %DATE% %TIME% [INFO] TracLightデータバックアップ終了 >> %LOG_FILE%
pause

REM exit /0

まとめ

とりあえずバックアップを取っておけば何かあった時に安心ですからね。

リストアなんかも試してみて、
特に問題なかったのでそのまま使えるかと思います。

ちなみに Trac Lightnin のバージョンは 3.2 です。

ではでは。

スポンサーリンク


関連するコンテンツ

2017年10月19日Trac Lightning,ソフトウェアSubversion,TracLightning,Windows

Posted by doradora