Tracのバックアップ
会社で使っているTracのバックアップをするスクリプトをPowerShellで作ってみた。
readonly TRAC_HOME "D:\trac-0.1.1" readonly BACKUP_HOME "F:\Trac-Backup" readonly SVN_REPO (Join-Path $TRAC_HOME "svn_repo\projects") readonly SVN_ADMIN (Join-Path $TRAC_HOME "subversion\bin\svnadmin.exe") readonly TRAC_ADMIN (Join-Path $TRAC_HOME "admin\trac\trac-admin.bat") ############################################################################### # 関数名: # Backup-Trac # 説明: # 指定したプロジェクトIDのTracプロジェクトをバックアップします。 # 引数: # $projectID : プロジェクトID # $projectOnly : プロジェクトのみバックアップする ############################################################################### function Backup-Trac([string]$projectID, [switch]$projectOnly) { $curDir = Get-Location $backupDir = (Join-Path $BACKUP_HOME (Get-Date -format "yyyyMMdd")) New-Item (Join-Path $backupDir $projectID) -force -type "Directory" $Env:PROJECT_ID = $projectID Set-Location (Join-Path $TRAC_HOME "admin\trac") .$TRAC_ADMIN hotcopy (Join-Path $backupDir $projectID"\trac") if(!$projectOnly) { Set-Location (Join-Path $TRAC_HOME "subversion\bin") .$SVN_ADMIN hotcopy (Join-Path $SVN_REPO $projectID) (Join-Path $backupDir $projectID"\subversion") } Set-Location $curDir } Set-Alias bktrac Backup-Trac # バックアップ開始 bktrac default bktrac wiki -projectOnly
っと、実行にはこの関数が必要やった。
############################################################################### # 関数名: # Define-ReadOnly (readonly) # 説明: # 指定した名前で読み取り専用の変数を定義します。 # 引数: # $name : 変数名 # $value : 値 # $scope : 変数のスコープ ############################################################################### function Define-ReadOnly([string]$name, [object]$value, [string]$scope="script") { if($name.Length -eq 0) { Write-Error "変数名を指定してください" -Category InvalidArgument } elseif($value -eq $null) { Write-Error "値を指定してください" -Category InvalidArgument } else { Remove-Variable -force $name -ErrorAction SilentlyContinue Set-Variable $name $value -option ReadOnly -scope $scope } } Set-Alias readonly Define-ReadOnly
読み取り専用の変数を設定する関数。
このスクリプトをタスクに仕込んで定期的バックアップが完成。