DPM 2007에서 실패한 테이프 백업 시도를 반복하는 방법은 무엇입니까?

DPM 2007에서 실패한 테이프 백업 시도를 반복하는 방법은 무엇입니까?

첫 번째 백업 시도가 실패한 경우(예: 라이브러리에 테이프가 없거나 라이브러리나 드라이브에 간헐적인 오류가 발생한 경우) 보호 그룹의 예약된 백업을 어떻게 반복합니까?

상황에 맞는 메뉴에서 "복구 지점 생성 - 테이프"를 선택하여 콘솔에서 단일 보호 요소를 강제로 백업할 수 있다는 것을 알고 있지만 전체 보호 그룹의 테이프 백업을 어떻게 강제로 수행합니까?

답변1

부인 성명!! 이것은 제가 실제로 사용하는 것의 정리된 버전입니다. 정리된 버전을 테스트할 필요가 없었으므로 아마도 한두 가지 오류가 있을 것입니다. 사과드립니다! 실수를 발견하면 다른 사람들이 다시 고칠 필요가 없도록 댓글/수정/무엇이든 알려주세요.

  1. 모니터링 -> 경고에 여전히 오류가 있는 경우 해당 오류를 마우스 오른쪽 버튼으로 클릭하고 백업 재개를 선택할 수 있습니다.
  2. 현재 보호되는 서버에 있는 새 백업을 생성하려면
    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..."
        }
    }
    

    백업할 서버 및 보호 그룹의 이름을 묻는 메시지가 표시됩니다.

  3. 디스크 백업을 테이프 미디어에 복사하려는 경우(전체 보호 그룹에 대해)
    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]
    

관련 정보