Logo
RoboBackup: Ein Einfaches, Zuverlässiges Mirror-Backup für Windows mit PowerShell und Robocopy
share forum

RoboBackup: Ein Einfaches, Zuverlässiges Mirror-Backup für Windows mit PowerShell und Robocopy


Software • von Sven Reifschneider • 20. März 2025 • 0 Kommentare

Weil zuverlässige Backups auch ohne teure Software gehen

Ich bin ein großer Fan davon, einfache Lösungen für scheinbar komplexe Probleme zu finden – besonders, wenn es um Backups geht. Wer Linux nutzt, greift meist einfach zu rsync, um wichtige Daten zuverlässig auf ein NAS oder eine externe Festplatte zu sichern. Doch was ist die beste Alternative für Windows? Nach einiger Recherche und mit ein wenig Hilfe von ChatGPT habe ich eine minimalistische, aber extrem robuste Backup-Lösung mit PowerShell und Robocopy entwickelt.

Diese Lösung ist perfekt für alle, die:

Ein zuverlässiges Backup-Tool für Windows suchen

Nicht auf Drittanbieter-Software oder Abo-Modelle setzen wollen

Eine rsync-ähnliche Mirror-Funktionalität mit Windows-Bordmitteln benötigen

Eine flexible, leicht anpassbare Lösung mit JSON-Konfiguration bevorzugen

Hier zeige ich dir, wie du mit Robocopy und PowerShell dein eigenes, vollautomatisches Backup-System erstellst – schlank, effizient und ohne unnötigen Overhead.

Warum Robocopy für dieses Backup-Szenario perfekt ist

Robocopy (Robust File Copy) ist ein leistungsstarkes Kommandozeilen-Tool, das bereits seit Windows NT existiert und auch in modernen Windows-Versionen enthalten ist. Es bietet viele Vorteile gegenüber klassischen Kopier-Methoden:

  • Effiziente Mirror-Backups: Dank /MIR wird das Zielverzeichnis exakt mit dem Quellverzeichnis abgeglichen, inklusive Datei- und Ordnerlöschung bei Änderungen.
  • Delta-Kopien: Robocopy überträgt nur geänderte Dateien, was Speicherplatz und Zeit spart.
  • Wiederaufnahme bei Unterbrechungen: Die Option /Z erlaubt das Fortsetzen eines unterbrochenen Kopiervorgangs.
  • Filter für Dateien und Ordner: Bestimmte Dateien (z. B. temporäre Logs oder Cache-Dateien) lassen sich über Ausschlusslisten ignorieren.
  • Integrierte Fehlerbehandlung: Anpassbare Wiederholungs- und Wartezeiten verhindern Fehlkopien bei temporären Netzwerkproblemen oder langes warten wenn gesperrte Dateien kopiert werden sollen (z.B. Lockfiles).

Mit diesen Features ist Robocopy die perfekte Wahl für ein einfaches, aber leistungsfähiges Backup-System, das zuverlässig im Hintergrund arbeitet. Bei mir läuft dieses Skript seit Monaten einwandfrei. Meiner Erfahrung nach zwar etwas langsamer als dedizierte Backup-Tools, dafür läuft es ressourcenschonend im Hintergrund und benötigt kein Programm, was ständig läuft.

So funktioniert das Backup-Skript

Die Struktur der Lösung

Mein PowerShell-Backup-System besteht aus drei wesentlichen Komponenten:

  1. backup.ps1 – Das Hauptskript, das mit Robocopy die eigentlichen Backups durchführt.
  2. backup_config.json – Die Konfigurationsdatei, die festlegt, welche Ordner gesichert, ausgeschlossen und wann Backups ausgeführt werden.
  3. backup_manage.ps1 – Ein Verwaltungs-Skript, das automatisch einen Task in der Windows-Aufgabenplanung erstellt, damit das Backup regelmäßig läuft.

Einrichten des Skripts Schritt für Schritt

1️⃣ Projekt herunterladen

Das komplette Skript kann direkt von GitHub bezogen werden:

git clone https://github.com/neoground/robobackup.git
cd robobackup

Oder einfach als zip-Datei herunterladen und entpacken.

2️⃣ Konfigurationsdatei anpassen

Die JSON-Datei backup_config.json enthält die Backup-Einstellungen. Sie sieht beispielsweise so aus:

{
    "taskName": "Periodic PowerShell Backup",
    "scriptPath": "C:\\robobackup\\backup.ps1",
    "triggers": [
        { "dayOfWeek": "Wednesday", "time": "13:00" },
        { "dayOfWeek": "Saturday", "time": "19:30" }
    ],
    "backups": [
        {
            "source": "C:\\Users",
            "destination": "\\\\192.168.1.1\\Backup\\Users",
            "excludeFiles": ["*.tmp", "*.log", "*.log.*", "NTUSER.DAT"],
            "excludeDirs": ["cache", "temp", "node_modules", "tmp", "*Temp*", "*Cache*", "Logs"]
        }
    ],
    "appListPath": "C:\\robobackup\\InstalledApps.txt",
    "logPath": "C:\\robobackup\\backup.log",
    "retryCount": 1,
    "waitTime": 1
}

Hier kannst du:

  • Backup-Quellen (source) und Ziele (destination) definieren
  • Bestimmte Dateitypen oder Ordner vom Backup ausschließen
  • Einen Backup-Zeitplan über die Aufgabenplanung (triggers) festlegen
  • Pfade anpassen, z.B. für die Liste installierter Programme (appListPath), um nach einem System-Crash schneller wieder alle Programme zu installieren.

Soll das Backup auf ein Netzlaufwerk (NAS / Samba) erfolgen, sollte als Ziel der Netzwerkpfad angegeben werden und nicht das gemappte Netzlaufwerk. Da Backslashes in JSON escaped werden, sind diese immer doppelt ausgeführt. Im Beispiel ist das Ziel \\192.168.1.1\Backup\Users.

3️⃣ Backup-Skript ausführen

Das Backup kann manuell über PowerShell gestartet werden:

.\backup.ps1

4️⃣ Automatisierung mit der Windows-Aufgabenplanung

Damit das Backup regelmäßig läuft, kann das backup_manage.ps1 Skript genutzt werden:

.\backup_manage.ps1

Dadurch wird automatisch eine geplante Aufgabe erstellt, die basierend auf der Konfiguration aus backup_config.json läuft.

Wenn du deine Konfiguration angepasst hast, kannst du das Programm einfach erneut ausführen, es aktualisiert dann die Einträge.

Der Robocopy-Befehl im Detail

Das Herzstück des Skripts ist die folgende Robocopy-Kommandozeile:

robocopyCommand = @(
    "robocopy",
    ""$source"",        # Quellpfad
    ""$destination"",   # Zielpfad
    "/MIR",             # Spiegelt das Quellverzeichnis exakt im Ziel
    "/COPY:DT",         # Kopiert nur Daten und Zeitstempel, keine NTFS-Attribute
    "/E",               # Inklusive Unterordner (auch leere)
    "/S",               # Exklusive leere Ordner
    "/Z",               # Wiederaufnahme bei Unterbrechung möglich
    "/NP",              # Keine Fortschrittsanzeige im Log
    "/XJ",              # Keine symbolischen Links (Vermeidung von Endlosschleifen)
    "/R:$($config.retryCount)", # Wiederholungen bei Fehlern
    "/W:$($config.waitTime)"   # Wartezeit zwischen Wiederholungen
)

Diese Kombination sorgt für ein zuverlässiges, inkrementelles Mirror-Backup. Daran angehängt werden dann die Dateien und Ordner, die ignoriert werden sollen.

Pro-Tipps für ein noch besseres Backup

💡 Windows-Anmeldeinformationen für Netzwerklaufwerke speichern

Falls du auf ein Netzlaufwerk sicherst, speichere die Zugangsdaten mit:

cmdkey /add:192.168.1.1 /user:DeinBenutzername /pass:DeinPasswort

Ich lasse das Programm als meinen Standard-User laufen. Hier habe ich die Netzlaufwerke im Windows Explorer eingebunden, wodurch die Zugangsdaten hinterlegt sind. Möchte man das Skript als Admin oder System-User laufen lassen, müssen die Zugangsdaten auch für den entsprechenden User hinterlegt werden.

💡 Winget für die Software-Liste nutzen

Ich nutze winget sehr gerne zum installieren und aktualisieren von Software. Das klappt inzwischen sehr gut und passt perfekt in meinen Workflow, ähnlich wie apt auf Debian.

Nach einem Systemcrash hilft es enorm, eine Liste der installierten Programme zu haben. Das Skript speichert dies mit:

winget list > C:\robobackup\InstalledApps.txt

💡 Backup-Protokolle überprüfen

Falls ein Backup fehlschlägt, hilft die Log-Datei. Der Pfad zu dieser Datei kann in der Konfiguration angepasst werden. Diese beinhaltet den Output von Robocopy.

Warum diese Lösung besser ist als viele kommerzielle Alternativen

🚀 Schnell & effizient – Keine Overhead-Software, direkt in Windows integriert

🔧 Maximale Kontrolle – Vollständig anpassbar durch JSON

📡 Netzwerkfähig – Perfekt für NAS-Backups

🔄 Automatisiert – Läuft im Hintergrund ohne weiteres Zutun

Ich habe viele Backup-Programme ausprobiert – aber keines war so direkt und effizient wie diese Lösung. Wenn du eine einfache, zuverlässige und kostenlose Möglichkeit suchst, deine wichtigsten Daten zu sichern, dann probiere RoboBackup aus.

Der Code ist inklusive ausführlicher Dokumentation auf GitHub zu finden: neoground/robobackup.

Vielleicht hilft dieses Projekt ja dem ein oder anderen weiter oder inspiriert zu einem eigenen, individuellen Backup-Skript.

Dieser Beitrag wurde mit Unterstützung durch KI (GPT-4o) erstellt. Die Illustrationen stammen von DALL-E 3. Erkunde, wie KI deine Inhalte inspirieren kann – Neoground GmbH.


Teile diesen Beitrag

Wenn dir dieser Artikel gefallen hat, teile ihn doch mit deinen Freunden und Bekannten! Das hilft mir dabei, noch mehr Leute zu erreichen und motiviert mich, weiterhin großartige Inhalte für euch zu erstellen. Nutze einfach die Sharing-Buttons hier unten, um den Beitrag auf deinen bevorzugten sozialen Medien zu teilen. Danke dir!

Sharing Illustration
Donating Illustration

Unterstütze den Blog

Falls du meine Arbeit und diesen Blog besonders schätzen solltest, würde ich mich riesig freuen, wenn du mich unterstützen möchtest! Du kannst mir zum Beispiel einen Kaffee spendieren, um mich bei der Arbeit an neuen Artikeln zu erfrischen, oder einfach so, um den Fortbestand des Blogs zu fördern. Jede noch so kleine Spende ist herzlich willkommen und wird sehr geschätzt!

currency_bitcoin Spende via Kryptowährungen
Bitcoin (BTC):1JZ4inmKVbM2aP5ujyvmYpzmJRCC6xS6Fu
Ethereum (ETH):0xC66B1D5ff486E7EbeEB698397F2a7b120e17A6bE
Litecoin (LTC):Laj2CkWBD1jt4ZP6g9ZQJu1GSnwEtsSGLf
Sven Reifschneider
Über den Autor

Sven Reifschneider

Herzliche Grüße! Ich bin Sven, ein technischer Innovator und begeisterter Fotograf aus der malerischen Wetterau, in der Nähe des lebendigen Frankfurt/Rhein-Main-Gebiets. In diesem Blog verbinde ich mein umfangreiches technisches Wissen mit meiner künstlerischen Leidenschaft, um Geschichten zu erschaffen, die fesseln und erleuchten. Als Leiter von Neoground spreng ich die Grenzen der KI-Beratung und digitalen Innovation und setze mich für Veränderungen ein, die durch Open Source Technologie Widerhall finden.

Die Fotografie ist mein Portal, um die flüchtige Schönheit des Lebens auszudrücken, die ich nahtlos mit technologischen Einsichten verbinde. Hier trifft Kunst auf Innovation, jeder Beitrag strebt nach Exzellenz und entfacht Gespräche, die inspirieren.

Neugierig, mehr zu erfahren? Folge mir in den sozialen Medien oder klicke auf "Mehr erfahren", um das Wesen meiner Vision zu erkunden.


Noch keine Kommentare

Kommentar hinzufügen

In deinem Kommentar kannst du **Markdown** nutzen. Deine E-Mail-Adresse wird nicht veröffentlicht. Mehr zum Datenschutz findest du in der Datenschutzerklärung.