Jump to content

Backup mit wbadmin löscht Log-Files nicht


Go to solution Solved by groddjur42,
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Recommended Posts

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

Edited by groddjur42
Link to comment

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

}


Edited by PowerShellAdmin
Link to comment
  • Solution

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 to comment

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!

Edited by Nobbyaushb
Link to comment

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

Edited by NorbertFe
Link to comment
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...