Distributed File System (DFS) – Wiederherstellen von Daten

Während der Dateireplikation zwischen den Replikationspartnern einer Replikationsgruppe gibt es „Regeln“ die entscheiden welche Dateien bzw. welcher Ordner bei Konflikten beibehalten werden und welche nicht. Bei Dateien gilt „last-writer wins“ – es gewinnt die aktuellste Dateiversion (=letzter Zeitstempel). Bei Ordnern hingegen gilt „first-creator wins“ – es gewinnt der zuerst erstellte Ordner, allerdings wird bei einem Konflikt von zwei Ordnern mit gleichem Namen der Inhalt zusammengeführt.

Für Dateien die in einen Konflikt geraten und verlieren gibt es standardmäßig einen versteckten Pfad an die sie verschoben werden:

DFS-ServernameReplizierterOrdnernameDfsrprivate

Beispielsweise: TestSRV01TestReplikation Dfsrprivate

VersteckteFreigabe

WICHTIG: Damit die versteckten im Ordner angezeigt werden muss man die Ordneroptionen des Windows Explorers anpassen. Die Option „Geschützte Systemdateien ausblenden“ muss deaktiviert sein und die Option „Ausgeblendete Dateien, Ordner und Laufwerke anzeigen“ muss aktiviert sein.

Option1

Option2

Wenn Dateien in einen der Pfade verschoben werden, wird dies entweder im ConflictAndDeletedManifest.xml oder im PreExistingManifest.xml festgehalten. Dabei werden im ConflictAndDeleted Ordner die unterschiedlichen Versionen einer Datei abgelegt. Die ursprünglichen Namen der Dateien werden anhand von GUIDs und anderen DFS-R internen Daten geändert um die Eindeutigkeit aller Daten zu gewährleisten. Allerdings wird die Zuordnung zwischen ursprünglichem und neuem Namen in den oben genannten XML-Dateien festgehalten um eine spätere Wiederherstellung zu ermöglichen.

Kommen wir nun zur Wiederherstellung von Daten. Es gibt verschiedene Möglichkeiten dies zu bewerkstelligen, beispielsweise über Skripte. Aber der, meiner Meinung nach, einfachste und sicherste Weg erfolgt über die Power Shell. Voraussetzung hierfür ist ein Windows 8.1 Client mit installierten RSAT oder ein Windows Server 2012R2 auf dem die DFS-Rolle installiert ist – nur dadurch erhält man Zugriff auf die benötigten Befehle in der Power Shell.

Wir verwenden das Cmdlet Restore-DfsrPreservedFiles, welches ermöglicht eine oder mehrere Dateien und Ordner aus den Ordnern ConflictAndDeleted und PreExisting anhand der XML-Manifeste wiederherzustellen. Parameter für das Cmdlet sind:

Path  — Pfad an dem die Manifestdatei liegt

RestoreToPath oder –RestoreToOrigin — Zielpfad für Wiederherstellung oder Wiederherstellung in Ursprungpfad

RestoreAllVersions (optional) — Stellt alle Versionen einer Datei wieder her, standardmäßig ist dies deaktiviert

CopyFiles (optional) — Legt fest ob die Dateien verschoben oder kopiert werden sollen, standardmäßig ist dies auf verschieben eingestellt

AllowClobber (optional) — Legt fest ob die wiederhergestellten Daten die existierenden Daten im Zielpfad ersetzen sollen, standardmäßig ist dies deaktiviert

Szenario:

Wir sind auf einem Windows Server 2012R2 (SRV12) mit installierter DFS-Rolle angemeldet. Die wiederherzustellenden Daten liegen auf einem Windows Server 2003 (SRV03) mit installierten und konfigurierten DFS-Diensten, die Daten sind über die Freigabe „Tausch“ freigegeben. Nun möchten wir Daten aus dem Ordner PreExisiting wiederherstellen, aber nicht ins Ursprungsverzeichnis sondern in das lokale Verzeichnis „C:Temp“ des SRV12.

Auf dem SRV12 rufen wir die Power Shell auf und verwenden folgenden Befehl:

Restore-DfsrPreservedFiles -Path „SRV03TauschDfsrPrivatePreExisitingManifest.xml“ -RestoreToPath „C:Temp“ -CopyFiles

ps

Ergebnis:

Die versteckten Dateien mit den kryptischen Namen auf SRV03 finden sich mit ihrem ursprünglichen Namen im lokalen Verzeichnis „C:Temp“ des SRV12 wieder.

Schreibe einen Kommentar

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.