# ============================================================================
# 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 | |
|---|---|---|---|---|---|
| #2 | 23205 | Robert Cowham | Merged all changes from dev to test | ||
| #1 | 20726 | Robert Cowham | Catch up from dev | ||
| //guest/perforce_software/sdp/dev/Server/Windows/p4/common/bin/daily-backup.ps1 | |||||
| #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 | ||