PowerShell BackupScript

PowerShell

Ich hab mal wieder ein Script geschrieben welches mir meine Daten auf dem Notebook auf eine externe HDD sichert.

Ich war letztens 2 Wochen beruflich in China unterwegs und hatte etwas Zeit über mein Backup nachzudenken. Auch wenn ich alle Daten in der Cloud, also Skydrive oder Dropbox speichere, wollte ich dennoch ein offline Backup haben.

Aktuell muss ich nur 2 Verzeichnisse sichern, meinen Benutzerordner und ein Programm, welches ich nicht so konfigurieren konnte das es die Daten in meinem Profil speichert.

Was würde also besser passen als ein PowerShell Script zu erstellen welches mir diese Daten sichert.

Das Script

Zu Beginn natürlich wieder die Variablen, die konfiguriert werden können.

$Destination ist das Ziel für euer Backup
$Versions gibt die Zahl der Backups an die behalten werden, alles was diese Zahl überschreitet wird im Ordner $Destination gelöscht
$Backupdirs gibt die Verzeichnisse an die gesichert werden soll, hier können auch mehr als 1 Verzeichnis angegeben werden

Danach kommen unsere Einstellungen, in denen wir den Namen für unser Backupdir suchen und ein paar Variablen definieren

Danach folgt der Code, zuerst überprüfen wir ob alle Verzeichnisse auch existieren, danach erstellen wir das Backup Verzeichnis, sollte es hier zu Fehlern kommen wir das Script gestoppt.

Jedoch wenn alles funktioniert wird mit der Sicherung begonnen und euch wir ein Statusbalken angezeigt.

Download auf der TechNet Gallery: http://gallery.technet.microsoft.com/PowerShell-Backup-Script-956f312c

Solltet ihr Fragen, Wünsche oder Probleme mit dem Script haben, schreibt mir ein Kommentar.

Alle meine TechNet Gallery Downloads findet ihr hier: 1jrYQoA

BITTE BEWERTE MEINE DOWNLOADS IN DER TECHNET GALLERY UND SAGT MIR WAS IHR EUCH VON DER NÄCHSTEN VERSION WÜNSCHT.

Michael Seidl aka Techguy

9 comments to PowerShell BackupScript

  • deparcus

    Hallo Michael,

    zunächst vielen Dank für das Script 😉 Sehr hilfreich.

    Mir sind jedoch 2 Fehler aufgefallen:

    1. Zählen der Verzeichnissen im Backup-Ziel funktioniert nicht (PowerShell Fehlermledung)

    Falsch:
    $Count=(Get-ChildItem $Destination -Directory).count

    Richtig:
    $Count=(Get-ChildItem $Destination | where {$_.Attributes -eq ‚Directory‘}).count

    Den Parameter -Directory gibt es nicht. Demnach muss im gesamten Script
    –> Get-ChildItem $Destination -Directory
    durch
    –> Get-ChildItem $Destination | where {$_.Attributes -eq ‚Directory‘}
    ersetzt werden.

    2. Beim Löschen der Backups wird immer das jüngste Backup gelöscht und nicht das älteste

    Falsch:
    Get-ChildItem $Destination -Directory | Sort-Object -Property $_.LastWriteTime -Descending | Select-Object -First $Delete | Remove-Item -Recurse -Force

    Richtig:
    Get-ChildItem $Destination | where {$_.Attributes -eq ‚Directory‘} | Sort-Object -Property @{Expression={$_.LastWriteTime};Ascending=$true} | Select-Object -First $Delete | Remove-Item -Recurse -Force

    Die Sortierung, so wie du sie geschrieben hast, funktioniert nicht (es wird, warum auch immer, nicht nach LastWriteTime, sondern nach Ordnernamen sortiert.
    Es muss also
    –> Sort-Object -Property $_.LastWriteTime -Descending
    durch
    –> Sort-Object -Property @{Expression={$_.LastWriteTime};Ascending=$true}
    ersetzt werden.

    Gruß
    deparcus

  • Hallo,

    danke für die Info.
    Zu Punkt 2, das wurde bereits in der aktuellen Version behoben, http://www.techguy.at/tag/backupscript/
    Zu Punkt 1, welche PowerShell Version nutzt du?

    Michael Seidl

  • deparcus

    Hallo,

    ich nutze Version 2.0. Könnte eventuell daran liegen.
    Habe nicht gesehen, dass es eine neue Version deines Scripts gibt 😉 Danke, werde mir sie mal anschauen.

    Gruß
    deparcus

  • deparcus

    Hallo,

    habe mir dein Script in Version 1.1 mal angeschaut und getestet.
    Die von mir beschriebenen Fehler sind dort auch drin.
    Fehler 1 mag an meiner PowerShell-Version liegen (wobei ich eine Lösung die nahezu unabhängig von der Version ist eleganter finde), aber Fehler 2 offenbar nicht, da hier die Sortierung nicht wie gewollt funktioniert.

    Gruß
    deparcus

  • Jens

    Hi,
    super Sache mit dem Backup-Script; habe versucht das auf meine Anforderungen anzupassen; grds. läuft es schon. Probs habe ich mit speziellen Verzeichnissen: z. B. user\appdata\roaming; es werden da Dateien ausgelassen. Weisst Du warum?

    VG
    Jens

  • Hallo,

    das Script is so gebaut, das Verzeichnisse welche keinen Zugriff gewähren, ausgelassen werden.
    ich denke das der ausführende User kein Recht hat, auf das Verzeichnis zuzugreifen.

  • Jens

    Hi,
    aber beim manuellen Kopieren unter Windows werden alle Dateien kopiert; es muss also einen Unterschied geben, entweder hins. der Berechtigung bei der Ausführung des Scripts oder im Copy-Befehl selbst.

    Danke für die Hilfe!
    Gruß
    Jens

  • Jens

    Ergänzung: es liegt an Dateien mit Sonderzeichen (bei mir eckige Klammern); leider kann man ja nie ausschließen, dass solche Dateien im Sicherungsbestand sind; die werden dann stillschweigend übergangen. Hab noch keine Lösung gefunden.

    VG
    jens

  • Hallo, ja Fehler werden ignoriert

Leave a Reply

  

  

  


*