Jump to content

Backup mit wbadmin löscht Log-Files nicht


Direkt zur Lösung Gelöst von groddjur42,
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo Forumsgemeinde,

mein Exchange Server 2010 (Windows 2008 R2) hat drei Laufwerke (C System, D Mailbox Datenbank, E Logfiles). Ich sichere täglich per wbadmin auf ein Netzlaufwerk mit folgendem Befehl:


     
          wbadmin start backup -quiet -user:XYZ -password:*** -allCritical -vssFull -include:d: -backupTarget:\\backup\ServerImage
 

Problem: Nach einer Sicherung werden die Log-Files nicht gelöscht.

Die Log-Files liegen zwar auf Laufwerk E:, aber sollte das nicht mit "-vssFull" nach erfolgreicher Sicherung gelöscht werden?


Bitte um hilfreiche Informationen

 

 

 

Hinweis: Dieser Post ist inhaltlich auch auf anderen Foren eingetragen. Eine gefundene Lösung wird in allen Posts nachgetragen

http://www.msxforum.de/community/index.php/Thread/15711-Sicherung-l%C3%B6scht-die-Log-Files-nicht/

http://www.mcseboard.de/topic/209023-backup-mit-wbadmin-l%C3%B6scht-log-files-nicht/

https://social.technet.microsoft.com/Forums/de-DE/8ec27aa9-0d8c-4ec0-8c91-d176c25408e0/wbadmin-backup-lscht-keine-logfiles-von-exchange?forum=exchange_serverde

bearbeitet von groddjur42
Link zu diesem Kommentar

Unabhängig vom Problem, ich würde das Ganze via PowerShell lösen.

 

Hier ein altes Beispiel und nicht das Schönste ;) Lief auf nem SBS2011

(Legt auf einem UNC Pfad Sicherungen an im Name des Wochentages und überschreibt diesen dann in der Folgewoche, wenn die Sicherung erfolgreich war).

 

Um Laufwerke zu ergänzen einfach in Zeile 183 anpassen und bei 184 dann noch hinzufügen.

#Variables
$email_versender='ms-psrv01@domain.de' #'kunde-Exchange@domain.de'
$email_empfaenger='watchdog@domain.biz'#,'info@domain.de'
$email_smtpserver='IP'
$smtp_port='587'

$logpath='C:\Tools\ExchangeBackup\backup.log'

#Backuppath networkdrive
$backuppath='\\kunde-nas\backup\exchange\'+(Get-Date -format dddd)



# catchs all errors
trap

{

    #sets the variables for the erroroutput
    $line=$_.InvocationInfo.Line
    $scriptname=$_.InvocationInfo.ScriptName
    $linenumber=$_.InvocationInfo.ScriptLineNumber
    $lineoffset=$_.InvocationInfo.OffsetInLine
    $message=$_.Exception.Message
    $time=timestamp
    $user=$env:USERDOMAIN+'\'+$env:USERNAME

    #creates the template
    $template=@'
##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.# <br>
Scripterror in "{0}" <br>
Scriptstart at {1} <br>
Scriptend at {2} in line {3} column {4}. <br>

Exception: <br>
    "{5}" <br>

Commandline: <br>
    {6}<br>

Run as:<br>
    {7}<br>

##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.# 
'@
    #creates the errormessage
    $message=$template -f $scriptname,$start_time,$time,$linenumber,$lineoffset,$message,$line,$user

    
    #writes log
    $message.Replace('<br>','') >> $logpath

    #sends an email
    sendmail 1 $message

    # exit code (0 => success; 1 => error)
    exit 1

}

#Function timestamp
Function timestamp

{

	$now=get-Date
	$yr=$now.Year.ToString()
	$mo=$now.Month.ToString()
	$dy=$now.Day.ToString()
	$hr=$now.Hour.ToString()
	$mi=$now.Minute.ToString()
	$se=$now.Second.ToString()

	if ($mo.length -lt 2) 

	{

		$mo="0"+$mo #pad single digit months with leading zero

	}

	if ($dy.length -lt 2)
 
	{

		$dy="0"+$dy #pad single digit day with leading zero

	}

	if ($hr.length -lt 2) 

	{

		$hr="0"+$hr #pad single digit hour with leading zero

	}

	if ($mi.length -lt 2) 
	
	{

		$mi="0"+$mi #pad single digit minute with leading zero

	}

	if ($se.length -lt 2)

	{

		$se="0"+$se #pad single digit minute with leading zero

	}

	write-output $yr$mo$dy" "$hr":"$mi":"$se

}

#set starttime
$start_time=timestamp

#email function
function sendmail ( $error_flag, $error_message )

{

	if($error_flag -eq 1)

    {
        
        $email_titel='Error: Exchange Backup '+(timestamp)
        #error description
        $email_inhalt=$error_message

    }

    else
    
    {
     
        $email_titel='Success: Exchange Backup '+(timestamp)
        $email_inhalt=$error_message

    }
    

    #disbale cert check
    [System.Net.ServicePointManager]::ServerCertificateValidationCallback = { return $true }

	#create email object
    $SMTPMessage = New-Object System.Net.Mail.MailMessage($email_versender,$email_empfaenger,$email_titel,$email_inhalt)
    $SMTPClient = New-Object Net.Mail.SmtpClient($email_smtpserver, $smtp_port) 
    $SMTPClient.EnableSsl = $true
	
	#send mail
    $SMTPClient.Send($SMTPMessage)
}

# Add Backup Snapin
Add-PSSnapin Windows.Serverbackup -ErrorAction SilentlyContinue


#set the tempname
$tempbackupname='WindowsImageBackup_Temp'

$tempbackuppath=$backuppath+'\'+$tempbackupname

#checks state of the last backup - renaming
if (((Get-WBSummary).LastBackupResultHR -eq 0) -and (Test-Path -path ($backuppath)))
{

    #renaming to tempname
    Rename-Item -path ($backuppath+'\WindowsImageBackup') -newName $tempbackupname

}

#Main Backupscript

# Create a backup job
$profiles = New-WBPolicy

#Adds Backup-Volumes 
$volC = Get-WBVolume -AllVolumes | Where {$_.MountPath -eq “C:”}
#$volD = Get-WBVolume -AllVolumes | Where {$_.MountPath -eq “D:”}
$Volumes = $volC #,$volD

#Add volumes to the blank policy.
Add-WBVolume -policy $profiles -volume $Volumes

#Set Backuppath
$target = New-WBBackupTarget -NetworkPath  $backuppath

#Add targets
Add-WBBackupTarget -policy $profiles -target $target

#Set for system state and for bare metal recovery
Add-WBSystemState -policy $profiles
Add-WBBareMetalRecovery -policy $profiles

#Set VSSFull
Set-WBVssBackupOptions -policy $profiles -VssFullBackup

#Perform backup
start-WBBackup -Policy $profiles -Debug $true

#Check the return code - result
if ((Get-WBSummary).LastBackupResultHR -eq 0) 

{

	#delete tempbackup 
	if (Test-Path -path ($tempbackuppath))
	{

		Remove-Item $tempbackuppath -recurse 

	}

	#writes log
	'#SUCCESS: Exchange Backup'+(timestamp)>> $logpath
	
	#sends an email
	sendmail 0 'Exchange Backup executed successfully '+(timestamp)

	#exit code 0 = success
	exit 0

} 
else 

{

	'#ERROR: Exchange Backup'+(timestamp)+'Error: '+((get-wbjob -previous 1 |select ErrorDescription).errordescription)>> $logpath        

        #Errorhandling
        #send an email with error-details
        sendmail 1 ((get-wbjob -previous 1 |select ErrorDescription).errordescription+' '+(timestamp))

        #exit code 1 = error
        exit 1

}


bearbeitet von PowerShellAdmin
Link zu diesem Kommentar
  • Beste Lösung

Problem gelöst !  (Dank an testperson)

 

Offenbar muss in der Sicherung auch das Laufwerk mit den Logs inkludiert werden. Hierdurch wird offenbar eine Konsistenzprüfung der DB ausgeführt (war vorher bei mir nicht der Fall) und - sofern erfolgreich - danach alle Logs gelöscht.

 

Der für mich korrekte Befehl lautet also:

 

wbadmin start backup -quiet -user:XYZ -password:*** -allCritical -vssFull "-include:d:,e:" -backupTarget:\\backup\ServerImage

 

(wichtig die "" um das include, sonst gibts nen Fehler)

Link zu diesem Kommentar

Eigentlich schon, nur war meine Denkweise "DB ist ok, wenn Backup dann auch ok können die Logs ja gelöscht werden OHNE dass sie extra mitgesichert werden (steht ja alles korrekt in der DB drin)" :D

Falsch.

Exchange merkt, das der Server Online gesichert wird und prüft, ob die Logs auch wirklich sauber in die DB geschrieben wurden, und "erlaubt" dann der DaSi, diese Dateien zu löschen.

 

Btw: auf ein Share zu sichern ist nicht gut, da du nicht auf ältere Backups zurückgreifen kannst.

 

Da ich von einer VM ausgehe, würde ich (bei schmalem Geldbeutel..) einfach eine weitere vhdx mit fester Größe einbinden und diese als Backup-Target verwenden.

 

Das kannst du dann ja seperat, z.B. mit einem Task auf ein share, z.B. einem NAS in Sicherheit bringen.

 

;)

 

Nachtrag - danke für die Rückmeldung hier und in den anderen Foren!

bearbeitet von Nobbyaushb
Link zu diesem Kommentar

Eigentlich schon, nur war meine Denkweise "DB ist ok, wenn Backup dann auch ok können die Logs ja gelöscht werden OHNE dass sie extra mitgesichert werden (steht ja alles korrekt in der DB drin)" :D

Die Logs werden gesichert und danach werden sie gelöscht, weil man sie für ein Recovery ja benötigen könnte. Das hat noch gar nichts mit dem Commit an die DB zu tun afair. Abgesehen davon, könntest du ja auch inkrementell sichern, dabei würden nur die Logs gesichert und gelöscht. :p

bearbeitet von NorbertFe
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...