Как повторить запланированное резервное копирование группы защиты, если первая попытка резервного копирования не удалась (например, если в библиотеке не было лент или если в библиотеке или на диске произошел периодический сбой).
Я знаю, что вы можете принудительно выполнить резервное копирование отдельного защищенного элемента в консоли, выбрав «Создать точку восстановления - Лента» в контекстном меню, но как принудительно выполнить резервное копирование на ленту всей группы защиты?
ОТКАЗ !! Это очищенные версии того, что я на самом деле использую, у меня не было необходимости тестировать эти очищенные версии, поэтому они, вероятно, содержат одну или две ошибки. Мои извинения! Прокомментируйте / отредактируйте / что-нибудь, если обнаружите ошибку, чтобы другим не пришлось ее исправлять снова.
Если вы хотите создать новую резервную копию (то, что сейчас находится на защищенном сервере)
Откройте оболочку DPM и вставьте этот сценарий:
param([string] $dpmname, [string] $pgname)
if(!$dpmname) {
$dpmname = Read-Host "DPM server"
}
if(!$pgname) {
$pgname = Read-Host "Protection Group Friendly Name"
}
Write-Output "Creating Tape Recovery Point"
trap{"Error in execution... $_";break}
&{
Write-Output "Getting protection group $pgname in $dpmname..."
$clipg = Get-ProtectionGroup $dpmname | where { $_.FriendlyName -eq $pgname}
if($clipg -eq $abc) {
Throw "No PG found"
}
Write-Output "Getting DS from PG $pgname..."
$backupds = @(Get-Datasource $clipg)
foreach ($ds in $backupds) {
Write-Output "Creating Recovery point for $ds..."
$j = New-RecoveryPoint -Datasource $ds -Tape -ProtectionType LongTerm
$jobtype = $j.jobtype
Write-Output "$jobtype Job has been triggerred..."
}
}
Будет запрошено имя сервера и группы защиты для резервного копирования.
Если вы хотите скопировать резервную копию диска на ленточный носитель (для всей группы защиты)
Откройте оболочку DPM и вставьте этот сценарий:
param([string] $dpmserver, [string] $pgname, [datetime] $rpdt, [int] $tapeoption)
$searchminutes = 10
$libraryindex = 0
if(!$dpmserver) {
$dpmserver = Read-Host "DPM server"
}
if(!$pgname) {
$pgname = Read-Host "Protection Group Friendly Name"
}
if(!$rpdt) {
$rpdt = Read-Host "Time of existing Recovery Point"
if (($rpdt -as [DateTime]) -ne $null) {
$rpdt = [DateTime]::Parse($rpdt)
} else {
Write-Host 'You did not enter a valid date/time!'
}
}
$rpdt.AddMinutes($serachminutes / 2)
if(!$tapeoption) {
$tapeoption = Read-Host "Tape Option: 0 = Compress, 1 = Encrypt, 2 = Neither"
}
Write-Host "Creating $backupoption Recovery Point"
trap{"Error in execution... $_";break}
&{
Write-Host "-Getting protection group $pgname in $dpmserver..."
$clipg = Get-ProtectionGroup $dpmserver | where { $_.FriendlyName -eq $pgname}
if(!$clipg) {
Throw "No PG found!"
}
Write-Host "-Getting libraries on $dpmserver..."
$libraries = @(Get-DPMLibrary -DPMServerName $dpmserver)
if(!$libraries) {
Throw "No Tape Drive/Library found!"
}
Write-Output "--Getting Data Sources from Protection Group $pgname..."
$backupds = @(Get-Datasource $clipg)
foreach ($ds in $backupds) {
Write-Host -NoNewline "---$ds... "
$rps = @(Get-RecoveryPoint -Datasource $ds) | Where { (New-TimeSpan -Start $_.RepresentedPointInTime -End $rpdt).TotalMinutes -lt $searchminutes }
Write-Host -NoNewline "RPs Found... "
foreach ($rp in $rps) {
Write-Host -NoNewLine "Creating Job... "
$j = Copy-DPMTapeData -RecoveryPoint $rp -SourceLibrary $libraries[$libraryindex] -TapeLabel "asdf" -TapeOption $tapeoption -TargetLibrary $libraries[$libraryindex]
Write-Host "Job: $j.status"
}
}
}
Примечание: если вы знаете, что делаете, основная структура приведенного выше скрипта:
$libs = @(Get-DPMLibrary -DPMServerName $dpmname)
$pg = @(Get-ProtectionGroup -DPMServerName @dpmname)
$ds = @(Get-Datasouce -ProtectionGroup $pg[n])
$rp = @(GetRecoverPoint -Datasource $ds[n])
Copy-DPMTapeData -RecoveryPoint $pr[n] -SourceLibrary $libs[n] -TapeLabel "Whatever" -TapeOption $x $TargetLibrary $libs[n]