Windows-Datensicherung in eine VHD(X)-Datei

Den erfahrenen Windows Backup-Anwender wird der Titel zunächst irritieren, speichert das Microsoft-Bordmittel seine Datensicherung, wenn es sich um ein Abbild handelt, doch so oder so in eine VHD-Datei, lediglich Dateisicherungen werden in ZIP-Dateien abgelegt. Um die geht es in diesem Beitrag allerdings nicht. Lässt man die Datensicherung auf ein virtuelles Laufwerk, in diesem Falle eine VHD-Datei ablegen, so erhöht das zwar den Aufwand zum Sichern und Wiederherstellen geringfügig, bietet dafür auf der Gegenseite ein paar Möglichkeiten.

Wieso, weshalb, warum?!

Die Windows-eigene Datensicherung seit Windows Vista ist nicht unbedingt leicht zu verstehen oder leicht zu bedienen, wenn man bestimmte Dinge tun möchte. Microsoft ist nicht ganz unschuldig daran, ändert(e) sich der Funktionsumfang mit jeder neuen Windows-Version als auch in Abhängigkeit vom Sicherungs-Ziel und nicht zuletzt dem verwendeten Weg, wie die Datensicherung konfiguriert wird.

Eine genauere Kontrolle darüber, was die Datensicherung kann und macht, bietet der Befehl “wbadmin” mit dessen Hilfe und ein wenig Übung lässt sich einiges anstellen. Für Verwirrung sorgt zudem, das im Gegensatz zum früheren “ntbackup” als auch die aktuellen Lösungen wie z.B. von Acronis oder Drive Snapshot anhand Sicherungsdateien, also die Dateien, die die gesicherten Daten enthalten, nicht erkennbar ist, ob es sich um eine Voll- oder Differenzsicherung handelt.

Letzteres liegt daran, das Microsoft primär mit einer einzelnen VHD-Datei arbeitet, die das aktuellste Abbild, also die aktuellste Datensicherung enthält und mit einem Satz XML-Dateien, die Änderungen an den (Daten-)Blöcken zu den unterschiedlichen Sicherunszeitpunkten beinhalten. Daraus ergibt sich, das man mit einer entsprechend kompatiblen Virtualisierungslösung schnell und einfach (sofern es keinen Bluescreen 0x0000007b gibt) das Abbild als virtuelle Maschine starten kann.

Auf der anderen Seiten hat man schlicht keine getrenten Dateien für Voll- und Differenzsicherung.

Soweit so gut, aber warum die Datensicherung in eine zusätziche VHD-Datei?

Um diese Frage kurz zu beantworten: Um ein einhaltliches Ziel mit allen möglichen Funktionen zu haben! Klingt seltsam, hat aber mehrere Hintergründe: So lässt die Windows-Datensicherung Voll- und Differenzsicherungen nur auf lokale Datenträger oder Wechselmedien (USB-Festplatten) zu. Möchte man auf ein Netzlaufwerk sichern, so wird “nur” eine Vollsicherung erstellt. Problematisch kann auch das Sichern auf RDX-Laufwerke sein, Diese erscheint zwar als Wechsellaufwerk, allerdings erscheint bei der Datensicherung eine Abfrage. Diese Meldung kann man nun auf zwei Wegen umgehen, einmal per Übergabe des erwarteten Buchstabens (siehe hier) oder eben per Sicherung in eine VHD-Datei.

Ferner lassen sich mit der Größenangabe der VHDs der maximale zu belegende Speicherplatz durch die Datensicherung regeln. Letzteres ist gerade bei der Sicherung auf ein Netzlaufwerk (zusätzlich) interessant, denn wer möchte seinen Dateiserver oder NAS schon mit der Datensicherung eines Windows-Computers “zumüllen”.

Vorbereitung

Zunächst muss auf dem Zielgerät eine VHD-Datei vorhanden sein. Diese kann sowohl mit fester als auch wachsender Größe erstellt werden. Für beide Arten gilt das während der Erstellung angegebenen Größenlimit. Um eine VHD zu erstellen, kann man entweder die Datenträgerverwaltung (“Aktion – Virtuelle Festplatte erstellen”) oder den Befehl “diskpart” bemühen:

create vdisk file=LW:\Backup.vhd maximum=40000 type=expandable
select vdisk file=LW:\Backup.vhd
attach vdisk
create partition primary
format quick label=Backup

Dieser Befehlsblock erstellt eine 40 GB große wachsende VHD-Datei, hängt Diese eine, partitioniert und formatiert sie.

Die eigentliche Datensicherung

Anbei ein Beispiel-Skript, welches zunächst die VHD-Datei einhängt, eine Datensicherung durchführt und abschließend die VHD-Datei wieder trennt:

@echo off

title Backup...

rem configuration

set destination=E:

rem diskpart attach vdisk

diskpart /s attach-vhd.txt

rem pause

ping 127.0.0.1 -n 5 > NUL

rem backup

start /wait wbadmin start backup -backupTarget:%destination% -allCritical -include:C: -vssFull -quiet

rem diskpart detach vdisk

diskpart /s detach-vhd.txt

Den Befehl “diskpart” kann man nur über zusätzliche Skripte automatisieren:

Inhalt der Datei “attach-vhd.txt”:

select vdisk file=LW:\Backup.vhd
attach vdisk

Inhalt der Datei “detach-vhd.txt”:

select vdisk file=LW:\Backup.vhd
detach vdisk

P.S.: VHDX-Dateien funktionieren natürlich auch!

Troubleshooting

Falls es Probleme mit den Laufwerksbuchstaben der verbundenen VHD-Dateien gibt, kann man das Skript wie hier beschrieben erweitern bzw. ändern:

Windows Server-Sicherung in VHD-Dateien mit unterschiedlichen Laufwerksbuchstaben

1 Kommentar

  1. Peter Parys

    Danke für die sehr gute Vorlage. Habe das Skript etwas angepasst bzw. zu einem Skript zusammengefasst:

    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
    @echo off

    title Backup…

    rem configuration

    set vhdxFile=”D:WindowsBackup.vhdx”

    set destination=R:

    rem end of configuration

    rem create backup-vhdx if not present
    if not exist %vhdxFile% call :create-backup-disk %vhdxFile% %destination% 250000

    set tempscript=%temp%%~n0.tmp

    rem diskpart attach vdisk
    echo select vdisk file=%vhdxFile%>%tempscript%
    echo attach vdisk>>%tempscript%
    diskpart /s %tempscript%
    del %tempscript%

    rem pause
    :WaitForAttach
    timeout /T 1 >nul
    if not exist %destination% goto WaitForAttach

    rem backup
    start /wait schtasks /run /TN “MicrosoftWindowsWindowsBackupAutomaticBackup”

    :waitForComplete
    timeout /T 30 >nul
    schtasks /query /FO List /TN “MicrosoftWindowsWindowsBackupAutomaticBackup” | find “Wird”
    if “%errorlevel%”==”0” goto waitForComplete

    rem diskpart detach vdisk
    echo select vdisk file=%vhdxFile%>%tempscript%
    echo detach vdisk>>%tempscript%
    diskpart /s %tempscript%
    del %tempscript%
    goto :EOF

    :create-backup-disk
    rem Creates a new thin (expandable) VHDX-File with NTFS format
    rem Params: drive:pathfilename.vhdx assignedVolumeLetter: [Size_MB]
    rem default size in MB: 250000

    if “%2″==”” goto paramsMissing

    if “%3″==”” (set size=250000) else set size=%3

    set tempscript=%temp%%~n0.tmp

    echo create vdisk file=%1 maximum=%size% type=expandable>%tempscript%
    echo select vdisk file=%1>>%tempscript%
    echo attach vdisk>>%tempscript%
    echo convert gpt>>%tempscript%
    echo create partition primary>>%tempscript%
    echo format quick label=Backup>>%tempscript%
    echo assign letter %2>>%tempscript%
    diskpart /s %tempscript%
    del %tempscript%
    goto :EOF

    :paramsMissing
    echo missing param.
    echo.
    echo syntax: drive:pathfilename.vhdx assignedVolumeLetter: [Size_MB]
    goto :EOF
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

© 2024 Andy's Blog

Theme von Anders NorénHoch ↑