# ============================================================================ # 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
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#1 | 23960 | noe_gonzalez | "Forking branch Dev of perforce-software-sdp to noe_gonzalez-sdp." | ||
//guest/perforce_software/sdp/dev/Server/Windows/p4/common/bin/daily-backup.ps1 | |||||
#8 | 22924 | Robert Cowham | Ensure recovery from offline created checkpoint | ||
#7 | 20640 | Robert Cowham | Test gets as far as liveCheckpoint | ||
#6 | 20175 | Robert Cowham |
Set-strictmode Remove warnings Improve exception logging |
||
#5 | 20150 | Robert Cowham | Refactored names to use PowerShell Verb-Noun convention | ||
#4 | 20149 | Robert Cowham | Split rotation of current script log file from rotation of other log files. | ||
#3 | 20147 | Robert Cowham | Fix mail subject | ||
#2 | 20146 | Robert Cowham |
Refactor email sending. Output final message of success/failure. |
||
#1 | 20142 | Robert Cowham | Initial versions of Powershell scripts |