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:
backup.ps1
– Das Hauptskript, das mit Robocopy die eigentlichen Backups durchführt.backup_config.json
– Die Konfigurationsdatei, die festlegt, welche Ordner gesichert, ausgeschlossen und wann Backups ausgeführt werden.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.
Noch keine Kommentare
Kommentar hinzufügen