Backup mittels Hardlinks unter Windows

Viele aus dem Linux-Bereich kennen seit vielen Jahren die Möglichkeit, sogenannte {de:Harter_Link|Hard}- oder {de:Softlink}s anzulegen.

Softlinks im Linuxumfeld – etwa mit den Verknüpfungen unter Windows zu vergleichen – sind in vielen Bereichen nützlich – spätestens jedoch wenn man Programmen „native“ Verknüpfungen zu Dateien unterschieben will, nicht hilfreich. Nachfolgend wird eine Möglichkeit des Backups durch Hardlinks beschrieben.

Folgende Situation:

Sie arbeiten zuhause an einem Computer mit angeschlossener, externer Festplatte zum Backup. Ihr Problem: Die Daten, die sie sichern möchten, liegen über das gesamte Betriebssystem verstreut. Einmal die „Eigenen Dateien“, ein paar Spielstände von Games auf Partition D:, die Bookmarks.html-Datei von Firefox im Anwendungsdaten-Ordner, die Programmeinstellungen von FileZilla, … die Liste könnte man schier endlos weiterführen.

Nun könnten Sie ein kleines Batch-Script schreiben, was z.B. mit der robocopy.exe aus den Windows Ressource Kit Tools die Daten auf die externe HDD schaufelt. Der Nachteil: Spätestens nach der 10. Robocopy-Quelle-Ziel-Parameter-Zeile verlieren Sie die Übersicht.

Sie könnten versuchen, einzelne Ordner und Dateien in einen Ordner „Backup“ zu verknüpfen, um diesen mit einem einzigen Robocopy-Befehl wegzusichern – wenn „Verknüpfungen“ unter Windows von Programmen als „Ziel“ und nicht „Verknüpfung“ interpretiert werden würden.

EINE Mögliche Lösung ist nun der Hardlink-Ansatz.

Was ist ein Hard Link?

Stellen Sie sich ihre Festplatte vor: Sie ist unterteilt in soetwas ähnliches wie ein „Gitternetz“ oder „Raster“. Jedes dieser Rasterfelder besitzt eine Adresse, und kann eine bestimmte Menge von Daten halten.

Irgendwo auf ihrer Festplatte existiert eine Datei, die Master File Table ({de:MFT}), in der zu jeder Datei das Start-Rasterfeld und End-Rasterfeld dokumentiert sind. Anhand dieser Datei findet das Betriebssystem einzelne Dateien auf der Festplatte.

Wenn Sie nun eine Datei erstellen (Neues Textdokument.txt), wird der Bereich (ein Beispiel!) A1B3 bis A1B9 beschrieben. In der MFT wird ein Eintrag hinzugefügt, dass die Datei „Neues Textdokument.txt“ auf der Festplatte von Startsektor A1B3 bis A1B9 zu finden ist.

Ein HardLink ist nun nichts weiteres als eine zusätzliche Referenz in der MFT – ein weiterer Eintrag. Zum Beispiel könnte ein weiterer Eintrag „Neues Textdokument 2.txt“ lauten, der ebenfalls auf den Speicherbereich A1B3 bis A1B9 verweist. Würden Sie erste Datei löschen, würde – wenn es nicht entsprechende Sicherheitsmaßnahmen gibt – auch die zweite Datei gelöscht.

Wie setze ich dies sinnvoll ein?

Gehen wir zu unserem Problem von oben zurück: Viele unterschiedliche Orte, deren Aufwand Sie zu sichern mit einfachen Mitteln ziemlich unübersichtlich und nervend sein kann.

Sie könnten nun auf Laufwerk C: einen Ordner „Backup“ anlegen. Darin erstellen Sie Hardlinks zu ihren wichtigsten Daten – ggf. einsortiert in eine sinnvolle Ordnerstruktur, z.b. unterteilt in „Spielstände“, „Dokumente“, etc.

Diesen Ordner können Sie dann per Robocopy mit einem periodischen Task auf ihre externe Festplatte sichern.

Wie erstelle ich nun aber Hardlinks?

Hardlinks werden vom aktuellen NTFS-Standard unterstützt, welcher u.A. bei Windows XP und Windows Vista genutzt wird. Eine Möglichkeit, Hardlinks durch Dialoge im Betriebssystem zu erstellen, existiert nicht – es gibt zwar einige kleine Programme für die Kommandozeile, diese sind jedoch nicht komfortabel einzusetzen.

Abhilfe schafft hier LinkShellExtension von Hermann Schinagl. Nach der Installation integrieren sich zusätzliche Dialoge in das Kontextmenü bei Dateioperationen.

Es gibt mehrere Varianten von Links – Junctions, HardLinks, HardLink Clones, SmartCopys, … Es genügt zu wissen, dass Sie für Dateien am besten HardLinks; für Ordner am besten Junctions verwenden. Nähere Details zur Funktionsweise und einer Beschreibung zu den einzelnen Befehlen erhalten Sie auf obiger Seite.

In einem der nächsten Artikel erläutere ich eine Möglichkeit, seinen Datenbestand durch einen Anbieter zentral auf einen Server zu lagern. Hardlinks spielen dabei eine wichtige Rolle.

Bastian

Seit 2006 bin ich täglich im IT-Umfeld unterwegs und interessiere mich für technische Lösungen im Hard- und Softwarebereich, die einem den Alltag erleichtern. Zu meinen Hobbies zählt ein 3D-Drucker, das auch (handwerkliche) Tüfteln, Scripten sowie der unqualifizierte Umgang mit dem Lötkolben.

Das könnte Dich auch interessieren …

1 Antwort

  1. Wir haben ein powershell tool geschrieben welches das geniale ln tool von Hermann Schinagl in eine komplette Backup-Lösung verwandelt: https://github.com/individual-it/ntfs-hardlink-backup

Schreibe einen Kommentar

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