# ============================================================================ # Copyright and license info is available in the LICENSE file included with # the Server Deployment Package (SDP), and also available online: # https://swarm.workshop.perforce.com/projects/perforce-software-sdp/view/main/LICENSE # ---------------------------------------------------------------------------- <# .Synopsis Daily_Backup.ps1 performs journal rotation to offline database and creates offline checkpoint .Description Admin access is required. Also recovers from the offline checkpoint to ensure that it is good, and that offline DB files are unfragmented. .Parameter sdp-instance The specified instance to backup .Example daily_backup.ps1 Master .Example daily_backup.ps1 1 #> [CmdletBinding()] param ([string]$SDPInstance = $(throw "SDPInstance parameter is required.")) Set-StrictMode -Version 2.0 # Source the SDP Functions shared between scripts $SDPFunctionsPath = Split-Path -parent $MyInvocation.MyCommand.Path | Join-Path -childpath "SDP-Functions.ps1" . $SDPFunctionsPath $global:ScriptName = "Daily-backup.ps1" $global:ScriptTask = "Daily Backup" $global:LogFileName = "checkpoint.log" Parse-SDPConfigFile $MyInvocation.MyCommand.Path Create-LogFile $OrigPath = convert-path . Set-Location -Path $global:LOGS_DIR try { Invoke-P4Login Check-OfflineDBUsable Check-OfflineDBExists Ensure-CheckpointNotRunning Get-CurrentJournalCounter Get-OfflineJournalCounter Truncate-Journal Rotate-Logfiles Replay-JournalsToOfflineDB Create-OfflineCheckpoint Recreate-OfflineDBFiles Remove-OldCheckpointsAndJournals Log-DiskSpace Remove-OldLogs Log "End ${global:SDP_INSTANCE_P4SERVICE_NAME} ${global:ScriptTask}" Send-Email "${env:computername} ${global:SDP_INSTANCE_P4SERVICE_NAME} ${global:ScriptTask} log." Set-Counter Signal-CheckpointComplete Write-Output "`r`n${global:ScriptTask} completed successfully - see ${global:logfile}" } Catch { write-error $error[0].ScriptStackTrace LogException $_.Exception Send-Email "FAILED: ${env:computername} ${global:SDP_INSTANCE_P4SERVICE_NAME} ${global:ScriptTask} log." Write-Output "`r`nFAILED - ${global:ScriptTask} - see ${global:logfile}" } Set-Location -Path $OrigPath