Loseblatt-Sammlung

Anleitung: Automatisches NAS-Backup mit Robocopy und PowerShell

Dieses Dokument dient als Vorlage und Dokumentation, um das automatische Hintergrund-Backup auf weiteren Windows 11 PCs einzurichten. Das System überwacht ausgewählte lokale Ordner und kopiert geänderte oder neue Dateien im Hintergrund auf das NAS, ohne geöffnete Fenster anzuzeigen. Die Steuerung erfolgt über ein Symbol in der Taskleiste (Tray-Icon).

1. Das PowerShell-Skript vorbereiten

Erstelle auf dem Ziel-PC eine Datei namens sync.ps1 (z. B. im Ordner C:\scripte\) und füge den folgenden Code ein. Passe die Pfade im Konfigurationsblock entsprechend an.

# Lädt die nötigen Module für grafische Elemente
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

# --- 1. KONFIGURATION ---
# Trage hier die Quell- und Ziel-Paare ein.
$SyncJobs = @(
    @{ Source = "C:\Users\jens\Documents"; Destination = "\\DeinNAS\Freigabe\Dokumente" },
    @{ Source = "C:\Users\jens\Pictures"; Destination = "\\DeinNAS\Freigabe\Bilder" },
    @{ Source = "C:\Users\jens\Desktop";  Destination = "\\DeinNAS\Freigabe\Desktop" }
)

$ScriptPath = $MyInvocation.MyCommand.Path

# --- 2. ROBOCOPY STARTEN ---
$RoboProcesses = @()

foreach ($Job in $SyncJobs) {
    # /E = Kopiert Unterverzeichnisse (löscht nichts im Ziel)
    $RoboArgs = "`"$($Job.Source)`" `"$($Job.Destination)`" /E /FFT /Z /W:1 /R:1 /MON:1 /MOT:1"
    $Process = Start-Process -FilePath "robocopy.exe" -ArgumentList $RoboArgs -WindowStyle Hidden -PassThru
    $RoboProcesses += $Process
}

# --- 3. TRAY ICON ERSTELLEN ---
$TrayIcon = New-Object System.Windows.Forms.NotifyIcon
$TrayIcon.Icon = [System.Drawing.SystemIcons]::Information
$TrayIcon.Text = "NAS Sync ($($RoboProcesses.Count) Ordner überwacht)"
$TrayIcon.Visible = $true

# --- 4. RECHTSKLICK-MENÜ ---
$ContextMenu = New-Object System.Windows.Forms.ContextMenuStrip
$TrayIcon.ContextMenuStrip = $ContextMenu

$MenuItemEdit = New-Object System.Windows.Forms.ToolStripMenuItem
$MenuItemEdit.Text = "Skript ändern"
$MenuItemEdit.add_Click({
    Start-Process "notepad.exe" $ScriptPath
})
[void]$ContextMenu.Items.Add($MenuItemEdit)

$MenuItemExit = New-Object System.Windows.Forms.ToolStripMenuItem
$MenuItemExit.Text = "Beenden"
$MenuItemExit.add_Click({
    foreach ($Proc in $RoboProcesses) {
        if ($Proc -and !$Proc.HasExited) {
            Stop-Process -Id $Proc.Id -Force
        }
    }
    $TrayIcon.Visible = $false
    [System.Windows.Forms.Application]::Exit()
})
[void]$ContextMenu.Items.Add($MenuItemExit)

[System.Windows.Forms.Application]::Run()

2. Einrichtung des automatischen & unsichtbaren Starts

Damit das Skript bei jeder Anmeldung komplett ohne sichtbares Konsolenfenster startet, wird eine Verknüpfung im Windows-Autostart hinterlegt:

VBS-Skript erstellen

  1. Öffne den normalen Windows-Editor (Notepad).
  2. Füge exakt diesen Code ein:
Set objShell = CreateObject("WScript.Shell")
objShell.Run "powershell.exe -ExecutionPolicy Bypass -File ""C:\scripte\sync.ps1""", 0, False
  1. Speichere die Datei in deinem Skript-Ordner (z. B. als C:\scripte\Start_Sync.vbs).
  2. Drücke Windows-Taste + R, gib shell:startup ein und bestätige mit Enter.
  3. Verschiebe die modifizierte Verknüpfung in diesen Autostart-Ordner.

3. Erklärung der Robocopy-Parameter

Parameter Bedeutung / Funktion
/E Kopiert alle Unterverzeichnisse inklusive leerer Ordner. Im Gegensatz zu /MIR werden im Ziel gelöschte Quelldateien NICHT entfernt (reine Archivfunktion).
/FFT Nutzt FAT-Zeitstempel. Erlaubt eine Toleranz von 2 Sekunden zwischen Windows (NTFS) und dem NAS-Dateisystem (meist ext4). Verhindert unnötiges Neukopieren identischer Dateien aufgrund von Rundungsdifferenzen.
/Z Kopiert im "Restartable" (wiederaufnahmebaren) Modus. Reißt die VPN- oder WLAN-Verbindung ab, setzt Robocopy exakt dort fort, wo es unterbrochen wurde.
/W:1 /R:1 Wartezeit (Wait) von 1 Sekunde und maximal 1 Wiederholungsversuch (Retry) bei blockierten Dateien. Verhindert, dass das Skript endlos hängenbleibt.
/MON:1 /MOT:1 Überwachungsmodus (Monitor). Startet den Kopiervorgang neu, sobald mindestens 1 Änderung (MON) registriert wurde UND mindestens 1 Minute (MOT) vergangen ist (stellt sicher, dass Dateien geschlossen sind).

4. Fernzugriff-Hinweis

Wenn dieses Setup auf Laptops verwendet wird, die sich außerhalb des Heimnetzwerks befinden, muss vor dem Datenabgleich eine sichere Verbindung über den OpenVPN-Client hergestellt werden. Sobald der Tunnel steht, funktioniert die Überwachung transparent über die lokale NAS-IP im Hintergrund weiter.