Automatisiertes und kostenloses Backup mittels Windows ntbackup

Man stelle sich vor, man möchte auf einfache Art und Weise die wichtigsten Daten auf allen Familien-PCs sichern. Man stelle sich vor, man administriere ein kleines Firmennetzwerk und möchte die Eigenen Dateien der externen Notebook-Anwender auf externen Datenspeichern kopieren. Man stelle sich vor, man möchte automatisiert und ohne großen Aufwand die wichtigsten persönlichen Daten an einen sicheren Ort speichern. Und das soll natürlich alles kostenlos und möglichst einfach funktioneren!

Windows Datensicherung mit ntbackup

Gibt's nicht? Gibt's nicht gibt's nicht! Ein Windows-Anwender muss noch nicht einmal eine zusätzliche Software installieren bzw. kaufen, denn Microsoft bringt mit dem Programm ntbackup eine eigene Backup-Software mit, welche mehr kann, als viele Anwender vermuten. ntbackup wird aber nicht nur im privaten Bereich, sondern auch in mittleren bis großen Netzwerken eingesetzt, um wichtige (System-)Daten zu sichern. Da dort Anwender nicht immer direkt im Firmennetzwerk arbeiten (bsp. Außendienst-Mitarbeiter), kommt ntbackup oftmals zum Einsatz, um lokal gespeicherte Daten (bsp. Eigene Dateien, Outlook-Postfach) auf ein externes Speichermedium zu exportieren.

ntbackup bringt einen grafischen Wizard mit, auf welchen in diesem Artikel nicht eingegangen wird. Vielmehr wird gezeigt, wie man sich eine kleine Batchdatei einrichten kann, welche automatisiert und auf Knopfdruck die Eigene Dateien und weitere ausgewählte Verzeichnisse auf eine externe USB-Festplatte sichert. Viele werden sich Fragen, warum denn der ganze Aufwand betrieben wird? Die Antwort ist einfach: es soll eine Möglichkeit geschaffen werden, eine Rechner-unabhängige Möglichkeit zu entwickeln, um vor allem die Eigene Dateien zu sichern. Da sich beispielsweise der Ordner Eigene Dateien bei jedem angemeldeten Anwender woanders befindet (Bsp.: C:\Dokumente und Einstellungen\_BENUTZER_\Eigene Dateien), muss man hier bereits dynamisch das Verzeichnis aus der Registry auslesen. Außerdem soll das Backup für den Anwender möglichst einfach gehalten werden.

Problem: Wo liegt der Ordner Eigene Dateien

Ein Windows-Anwender hat die Möglichkeit, den Speicherort der Eigenen Dateien an eine beliebige Stelle zu verlegen. Man muss also dynamisch aus dem Windows-System herauslesen, wo der Eigene Dateien Ordner des angemeldeten Benutzers liegt. Die persönlichen Ordner werden in der Registry unter HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders abgelegt, in diesem Falle im Schlüssel Personal. In einer Batchdatei liest man diesen Wert folgendermaßen aus:

REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Personal'

Sicherung der Eigenen Dateien

Die Syntax von ntbackup ist auf der einen Seite relativ komplex (aufgrund der großen Funktionsvielfalt). Auf der anderen Seite ist sie bei einer normalen Sicherung wieder sehr einfach. In diesem Fall ist es ausreichend, das zu sichernde Verzeichnis, den Sicherungsnamen (/j) und die Sicherungsdatei (/f) anzugeben. Wenn man mehrere Verzeichnisse in einer Sicherungsdatei speichern möchte, erweitert man die Sicherung um den Eintrag /a. Letztere Option hängt die Sicherung an eine bestehende Sicherung an.

    REM *** backup Eigene Dateien
    ntbackup.exe backup "%USERVRZ%" /j "Sicherung Eigene Dateie" /f sicherung.bkf

    REM *** backup C:\daten
    ntbackup.exe backup C:\daten /j "Sicherung lokales Verzeichnis" /f sicherung.bkf /a

Das fertige Sicherungsskript

Nun das fertige Skript: den folgenden Code einfach in eine Textdatei kopieren und unter XYZ.bat speichern. Die Batchdatei speichert man auf dem externen USB-Laufwerk, so dass der Anwender das Backup-Skript von diesem Laufwerk startet und die Sicherungsdatei dort speicher. Das Skript enthält noch einiges Zusatzfeatures wie eine einfache Textanzeige, Benutzerinteraktion (Eingabe für den Programmstart) und eine Überprüfung, ob die zu sichernden Verzeichnisse auch wirklich vorhanden sind.

@echo off

REM ************************************
REM          Batch-Datei
REM Datensicherung der
REM    "Eigenen Dateien"
REM
REM ************************************

REM *** Auslesen aus der Registry: Eigene Dateien Ordner
REM *** Ergebnis wird in Variable %USERVRZ% gespeichert
FOR /F "tokens=2* delims=     " %%A IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Personal') DO SET USERVRZ=%%B

REM *** Name der Backup-Datei definieren
SET BCKFILE=sicherung.bkf

ECHO ************************************
ECHO              BACKUP
ECHO ************************************
ECHO.
ECHO * Dieses Programm sichert den Ordner
ECHO * "Eigene Dateien" und weitere bestimmte
ECHO * Ordner auf diesem PC
ECHO.

ECHO Local folders:
ECHO --------------
ECHO %USERVRZ%
ECHO C:\daten
ECHO.
ECHO backup file:
ECHO ------------
ECHO %HDDVRZ%%BCKFILE%
ECHO.

REM *** Prüfen, ob die zu sichernden Dateien auch
REM *** wirklich vorhanden sind. Wenn nicht,
REM *** gehe zur Sprungmarke cancelFolder (Siehe unten)
IF not exist "%USERVRZ%" GOTO cancelFolder
IF not exist "C:\daten" GOTO cancelFolder

REM ***
SET /P J="Bitte yes + <ENTER> eintippen, um das Backup zu starten. Tippe eine beliebige Taste + <enter>, um das Programm zu beenden: "

REM *** Wenn yes eingegeben wurde, starte Backup
IF "%J%" == "yes" (
    ECHO start backup
   
    REM *** backup Eigene Dateien
    ntbackup.exe backup "%USERVRZ%" /j "Sicherung Eigene Dateie" /f "%HDDVRZ%%BCKFILE%"

    REM *** backup C:\daten
    ntbackup.exe backup C:\daten /j "Sicherung lokales Verzeichnis" /f "%HDDVRZ%%BCKFILE%" /a
   
    ECHO.
    ECHO Backup abgeschlossen
    ECHO ********************
    ECHO.
    ECHO * Bitte Backup-Datei %HDDVRZ%%BCKVRZ% prüfen
    ECHO * Tippe ^<ENTER^>, um das Programm zu beenden
ECHO * und lasse Dir den Backup-Ordner anzeigen
ECHO.
    PAUSE
    start explorer.exe %HDDVRZ%
   
    goto:eof

) ELSE (
    goto:eof
)

:cancelFolder
ECHO ERROR^!
ECHO ******
ECHO.
ECHO Quellordner nicht gefunden^!
ECHO Bitte folgende Ordner prüfen:
ECHO.
ECHO %USERVRZ%
ECHO C:\daten
ECHO.
PAUSE

Fertig! Die Sicherungsdatei wird automatisch auf dem externen USB-Laufwerk gespeichert.

Weitere Informationen

support.microsoft.com/kb/325832/de
support.microsoft.com/kb/814583

Funktionsweise von ntbackup

Syntax
ntbackup backup [systemstate] "@BKS_Dateiname" /J {"Auftragsname"} [/P {"Poolname"}] [/G {"GUID_Name"}] [/T { "Bandname"}] [/N {"Medienname"}] [/F {"Dateiname"}] [/D {"Beschreibung"}] [/DS {"Servername"}] [/IS {"Servername"}] [/A] [/V:{yes|no}] [/R:{yes|no}] [/L:{f|s|n}] [/M {Sicherungsart}] [/RS:{yes|no}] [/HC:{on|off}] [/SNAP:{on|off}]

Parameter
systemstate
Legt fest, dass die Systemstatusdaten gesichert werden sollen. Bei Auswahl dieser Option wird darüber hinaus in jedem Fall die Sicherungsart Normal oder Kopieren verwendet.
@BKS_Dateiname
Gibt den Namen der Sicherungsauswahldatei (BKS-Datei) für den Sicherungsvorgang an. Dem Namen der Sicherungsauswahldatei muss das @-Zeichen vorangestellt werden. Eine Sicherungsauswahldatei enthält Informationen zu den Dateien und Ordnern, die für die Sicherung ausgewählt wurden. Diese Datei muss mit der GUI-Version des Sicherungsdienstprogramms erstellt werden.
/J {"Auftragsname"}
Gibt den Auftragsnamen an, der in der Protokolldatei verwendet werden soll. Der Auftragsname beschreibt in der Regel die zu sichernden Dateien und Ordner im aktuellen Auftrag und enthält das Datum und die Uhrzeit der Sicherung.
/P {"Poolname"}
Gibt den Medienpool an, aus dem die Medien entnommen werden sollen. In der Regel ist dies ein Teilpool des Sicherungsmedienpools, beispielsweise 4-mm-DDS. Bei Auswahl dieser Option können die Befehlszeilenoptionen /A, /G, /F und /T nicht verwendet werden.
/G {"GUID_Name"}
Ermöglicht das Überschreiben des Bandes bzw. das Anhängen an das Band. Verwenden Sie diese Option nicht zusammen mit /P.
/T {"Bandname"}
Ermöglicht das Überschreiben des Bandes bzw. das Anhängen an das Band. Verwenden Sie diese Option nicht zusammen mit /P.
/N {"Medienname"}
Gibt den neuen Namen für das Band an. Verwenden Sie diesen Parameter nicht zusammen mit /A.
/F {"Dateiname"}
Gibt den logischen Pfad und den Dateinamen an. Verwenden Sie diesen Parameter nicht zusammen mit den folgenden Parametern: /P /G /T.
/D {"Beschreibung"}
Gibt eine Bezeichnung für die einzelnen Sicherungssätze an.
/DS {"Servername"}
Sichert die Verzeichnisdienstdatei für den angegebenen Microsoft Exchange Server.
/IS {"Servername"}
Sichert die Informationsspeicherdatei für den angegebenen Microsoft Exchange Server.
/A
Hängt die Objekte an. Bei diesem Parameter muss /G oder /T verwendet werden. Verwenden Sie diese Option nicht zusammen mit /P.
/V:{yes|no}
Überprüft die Daten nach Abschluss der Sicherung.
/R:{yes|no}
Beschränkt den Zugriff auf dieses Band auf den Besitzer und auf Mitglieder der Gruppe Administratoren.
/L:{f|s|n}
Gibt den Dateityp für die Protokolldatei an: f=vollständiges Protokoll, s=Zusammenfassung, n=keine (eine Protokolldatei wird nicht erstellt).
/M {Sicherungsart}
Bezeichnet die Sicherungsart. Die folgenden Werte sind zulässig: normal (Normal), copy (Kopieren), differencial (differenziell), incremental (inkrementell), daily (Täglich).
/RS:{yes|no}
Sichert die im Remotespeicher befindlichen migrierten Datendateien. Die Befehlszeilenoption /RS ist nicht erforderlich, um die lokale Wechselmediendatenbank zu sichern (die die Platzhalterdateien des Remotespeichers enthält). Beim Sichern des Ordners %systemroot% sichert das Sicherungsdienstprogramm automatisch auch die Wechselmediendatenbank.
/HC:{on|off}
Verwendet die Hardwarekomprimierung (falls vorhanden) des Bandgeräts.
/SNAP:{on|off}
Gibt an, ob es sich bei der Sicherung um eine Volumeschattenkopie handelt.
/M {Sicherungsart}
Bezeichnet die Sicherungsart. Die folgenden Werte sind zulässig: normal (Normal), copy (Kopieren), differencial (differenziell), incremental (inkrementell), daily (Täglich).
/?
Zeigt Hilfe an der Eingabeaufforderung an.

Beispiele

Beispiel 1
Das folgende Beispiel führt eine normale Sicherung mit der Bezeichnung "Mein Auftrag 1" der Remotefreigabe \\iggy-multi\c$ durch. Dieses Beispiel entnimmt ein Band aus dem Sicherungsmedienpool und versieht das Band mit dem Namen "Sicherung über Befehlszeile 1". Die Beschreibung des Sicherungsauftrags lautet "Befehlszeilenfunktion". Die Sicherung wird nach Abschluss des Sicherungsauftrags überprüft. Der Zugriff ist nicht auf den Besitzer/Administrator beschränkt. Die Protokollierungsebene "Zusammenfassung" wird verwendet. Die Daten im Remotespeicher werden nicht gesichert. Die Hardwarekomprimierung ist aktiviert.

ntbackup backup \\iggy-multi\c$ /m normal /j "Mein Auftrag 1" /p "Sicherung" /n "Sicherung über Befehlszeile 1" /d "Befehlszeilenfunktion" /v:yes /r:no /l:s /rs:no /hc:on

Beispiel 2
Das folgende Beispiel führt eine Kopie-Sicherung mit der Bezeichnung "Mein Auftrag 2" des lokalen Laufwerkes D:\ durch. Die gesicherten Dateien und Ordner werden an das Band mit der Bezeichnung "Sicherung über Befehlszeile 1" angehängt. Für alle anderen Optionen gelten die Einstellungen, die im Sicherungsprogramm festgelegt wurden.

ntbackup backup d:\ /j "Mein Auftrag 2" /a /t "Sicherung über Befehlszeile 1" /m copy

Beispiel 3
Das folgende Beispiel führt eine Sicherung mit der Sicherungsart durch, die im Sicherungsprogramm angegeben wurde. Hierbei werden die zu sichernden Dateien mithilfe der Sicherungsauswahldatei Befehlszeile.bks bestimmt, die sich im Verzeichnis C:\Programme\Windows NT\ntbackup\data\ befindet. Der Sicherungsauftrag erhält die Bezeichnung "Mein Auftrag 3". Der Auftrag überschreibt den Namen des Bandes "Sicherung über Befehlszeile 1" mit dem neuen Namen "Sicherung über Befehlszeile 2".

ntbackup backup "@C:\Programme\Windows NT\ntbackup\data\befehlszeile.bks" /j "Mein Auftrag 3" /t "Sicherung über Befehlszeile 1" /n "Sicherung über Befehlszeile 2"

Beispiel 4
Die folgenden Beispiele zeigen, wie Sie eine Sicherung in eine Datei über die Befehlszeile ausführen. Bei allen Beispielen gelten die Standardwerte (aus dem Sicherungsprogramm) für Sicherungsart, Überprüfung, Protokollierungsebene, Hardwarekomprimierung und für andere Einschränkungen. Im ersten Beispiel wird \\iggy-multi\d$ in der Datei D:\Sicherung.bkf gesichert. Aus dem zweiten Beispiel geht hervor, wie Sie dieselbe Sicherung an dieselbe Datei anhängen. Im dritten Beispiel wird erläutert, wie Sie die Datei mit derselben Sicherung überschreiben. Bei allen Beispielen können Sie den Laufwerkbuchstaben durch einen vollständigen UNC-Namen ersetzen. Verwenden Sie beispielsweise nicht D:Sicherung.bkf als Ziel für die Sicherung, sondern \\iggy-multi\d$\Sicherung.bkf.

ntbackup backup \\iggy-multi\d$ /j "Sicherung über Befehlszeile 4" /f "D:\Sicherung.bkf"

ntbackup backup \\iggy-multi\d$ /j "Sicherung über Befehlszeile 5" /f "D:\Sicherung.bkf" /a

ntbackup backup \\iggy-multi\d$ /j "Sicherung über Befehlszeile 6" /f "D:\Sicherung.bkf"