Ist es Ihnen schon einmal passiert, dass Sie eine Datei gelöscht haben und es sofort bereut haben? Sie brauchen sie zurück, und zwar schnell! Aber was, wenn die Datei so neu ist, dass sie noch nicht gesichert wurde? Zum Glück gibt es eine Lösung für dieses Problem.
rm: Steht es für Reue?
Es ist allzu leicht, den Befehl rm
zu verwenden und dann mit einem Gefühl wachsender Verzweiflung auf das Terminalfenster zu starren. Ein kleiner Fehler mit Platzhaltern, und schon hat man viel mehr gelöscht, als man eigentlich vorhatte.
Das Standard-Linux-Dateisystem, ext4, verwendet Inodes, um Daten über jede Datei zu speichern, sowie eine Inode-Tabelle zur Nachverfolgung der Inodes. Der Inode beinhaltet Metadaten über die Datei, wie beispielsweise ihren Namen, den Eigentümer, die Zugriffsrechte und so weiter.
Er enthält auch Verweise auf Hardlinks, die auf die Datei zeigen. Jede Datei hat mindestens einen Hardlink. Jedes Mal, wenn Sie einen neuen Hardlink erstellen, erhöht sich die Anzahl der Hardlinks um eins. Wenn Sie einen Hardlink entfernen, reduziert sich die Anzahl der Hardlinks im Inode um eins.
Wenn Sie eine Datei löschen, wird der letzte Hardlink entfernt und der Inode als ungenutzt (und bereit zur Wiederverwendung) markiert. Dies bedeutet, dass die Datei nicht mehr in Verzeichnislisten angezeigt wird und nicht mehr zugänglich ist.
Die Daten, die den Inhalt der Datei ausmachen, sind jedoch weiterhin auf der Festplatte vorhanden. Wenn man den Inode so anpassen könnte, dass er die korrekten Informationen enthält, wäre die Datei wiederherstellbar. Dies funktioniert natürlich nur, wenn die Dateidaten auf der Festplatte intakt und nicht überschrieben wurden.
Alternativ könnte man einen neuen Inode erstellen, die übrigen Daten aus dem alten Inode kopieren und dann die fehlenden Informationen hinzufügen.
Dies sind keine trivialen Aufgaben. Wenn Sie versehentlich eine Datei löschen, passiert dies meist im ungünstigsten Moment. Immer dann, wenn Sie diese Datei gerade benötigen, und zwar sofort. Sie haben keine Zeit, sich mit Sektoren-Editoren und anderen Tools zu beschäftigen. Und wenn es eine Datei ist, die Sie gerade erstellt haben, wurde sie wahrscheinlich noch nicht gesichert, was Ihnen auch nicht hilft.
Hier kommt Testdisk ins Spiel. Es ist einfach zu bedienen und erfordert keine tiefgehenden Kenntnisse des Dateisystems. Sehen wir uns an, wie man es benutzt!
Testdisk installieren
Verwenden Sie den folgenden Befehl, um Testdisk unter Ubuntu zu installieren:
sudo apt-get install testdisk
Auf Fedora geben Sie Folgendes ein:
sudo dnf install testdisk
Auf Manjaro verwenden Sie Pacman:
sudo pacman -Sy testdisk
Testdisk verwenden
Obwohl es in einem Terminalfenster läuft, hat Testdisk eine einfache Benutzeroberfläche. Sie navigieren mit den Pfeiltasten und bestätigen mit der Eingabetaste. Um die Übersicht zu behalten, empfiehlt es sich, ein Verzeichnis für die wiederhergestellten Dateien anzulegen.
Wir erstellen ein Verzeichnis namens „restored“ für unsere wiederhergestellten Dateien:
mkdir restored
Wir wechseln in das neue Verzeichnis und starten Testdisk von dort aus:
cd restored/
Wir müssen Testdisk mit sudo
ausführen:
sudo testdisk
Die erste Frage von Testdisk betrifft die Protokollierung. Es kann eine neue Protokolldatei erstellen, eine vorhandene nutzen oder keine Protokollierung durchführen. Welche Option Sie wählen, spielt keine Rolle und hat keinen Einfluss auf die Funktionsweise von Testdisk.
Drücken Sie einfach die Eingabetaste, um die hervorgehobene Option zu akzeptieren und eine neue Protokolldatei zu erstellen. Diese wird in dem Verzeichnis erstellt, von dem aus Sie Testdisk gestartet haben. Anschließend fragt Testdisk nach der Festplatte, auf der sich das Dateisystem befindet, in dem Sie arbeiten möchten.
Es listet die gefundenen Festplatten sowie die Squashfs „/dev/loop“-Dateien auf. Für jede Anwendung, die Sie als Snap installiert haben, gibt es eine solche Datei. Da diese schreibgeschützt sind, können Sie von diesen Dateisystemen nichts gelöscht haben.
In diesem Testcomputer gibt es nur eine physische Festplatte, daher haben wir mit der Abwärtspfeiltaste die Option „/dev/sda“ ausgewählt. Anschließend haben wir mit der Rechtspfeiltaste „Fortfahren“ ausgewählt und die Eingabetaste gedrückt.
Testdisk muss auch den Partitionstyp kennen. Es zeigt ein Menü mit Optionen und dem automatisch erkannten Partitionstyp.
Sofern kein triftiger Grund dagegen spricht, wählen Sie den automatisch erkannten Partitionstyp aus und drücken Sie die Eingabetaste.
Wählen Sie im folgenden Menü „Erweitert“ und bestätigen Sie mit der Eingabetaste.
Das Partitionsauswahlmenü wird angezeigt.
Die gesuchten Dateien befinden sich in der Linux-Dateisystempartition. Wir haben nur eine Linux-Partition auf unserer Festplatte, aber Sie könnten auch mehrere haben.
Wählen Sie die Partition, in der sich Ihre Dateien befanden, wählen Sie mit den linken und rechten Pfeiltasten „Liste“ und drücken Sie die Eingabetaste. Das Dateiauswahlmenü erscheint.
Verwenden Sie die Auf- und Abwärtspfeile oder die Bild-auf- und Bild-ab-Tasten, um durch die Liste der Dateien und Verzeichnisse zu navigieren. Drücken Sie den Rechtspfeil oder die Eingabetaste, um ein Verzeichnis zu öffnen, und den Linkspfeil oder Esc, um ein Verzeichnis zu verlassen.
Wir suchen nach Dateien, die dem Benutzer „Dave“ gehörten. Die Dateien aller Benutzerkonten befinden sich im Verzeichnis „home“. Wir wählen also das Verzeichnis „home“ aus und können es entweder mit der Rechtspfeiltaste oder der Eingabetaste öffnen.
Dann werden alle Benutzerkonten aufgelistet. Wir wählen „dave“ aus und öffnen dieses Verzeichnis mit der Rechtspfeiltaste oder der Eingabetaste.
Wir sehen nun die Dateien des Kontos „dave“. Die rot markierten Einträge wurden gelöscht. Wir navigieren durch die Dateien und Verzeichnisse, bis wir die Dateien finden, die wir wiederherstellen möchten.
Um eine Datei wiederherzustellen, markieren Sie sie und drücken Sie die Taste „c“ (kleingeschrieben).
Die Anzeige ändert sich und fordert Sie auf, einen Zielort für die wiederhergestellte Datei anzugeben. Da wir ein Verzeichnis namens „restored“ erstellt und Testdisk von dort aus gestartet haben, ist der erste Eintrag in der Liste (.) dieses Verzeichnis. Um diese gelöschte Datei in diesem Verzeichnis wiederherzustellen, drücken wir die Taste „C“ (großgeschrieben).
Danach gelangen Sie wieder zur Dateiauswahlansicht. Wenn Sie weitere Dateien wiederherstellen möchten, wiederholen Sie den Vorgang einfach. Markieren Sie eine gelöschte Datei, drücken Sie „c“ (kleingeschrieben), um sie zu kopieren, und dann „C“ (großgeschrieben), um sie wiederherzustellen.
Mit wiederhergestellten Dateien arbeiten
Nachdem Sie eine Datei wiederhergestellt haben, wird die Verzeichnisstruktur an ihrem ursprünglichen Speicherort rekonstruiert. Das ist nützlich, da es Sie daran erinnert, wo sich die ursprüngliche Datei auf der Festplatte befand. Wenn Sie diese wieder zurückkopieren müssen, wissen Sie, wohin sie gehört.
Wenn Sie mehrere Dateien von verschiedenen Orten im Dateisystem wiederherstellen, die zufällig denselben Dateinamen haben, müssen diese ohnehin separat gespeichert werden.
Sie können den Inhalt des Verzeichnisses „restored“ mit folgendem Befehl anzeigen:
ls
Wenn Sie Testdisk aufgefordert haben, eine Protokolldatei zu erstellen, befindet sich diese im Verzeichnis „restored“. Da sich unsere wiederhergestellten Dateien unter „/home/dave“ befanden, wurden sie in unser Verzeichnis „restored“ kopiert, verschachtelt in Verzeichnissen mit demselben Namen.
Mit cd
können wir in das kopierte Verzeichnis „dave“ wechseln. Achten Sie darauf, keinen führenden Schrägstrich (/) im Pfad einzufügen – Sie möchten in das lokale „home“ wechseln und nicht in das Systemverzeichnis „/home“.
Wir geben Folgendes ein:
cd home/dave
Die wiederhergestellten Dateien befinden sich in diesem Verzeichnis, also geben wir Folgendes ein:
ls
Sehen wir uns die wiederhergestellten Dateien noch einmal mit der Option „-l“ (Long Listing) an:
ls -l
Da wir Testdisk mit sudo
gestartet haben, wurden die wiederhergestellten Dateien mit „root“ als Eigentümer wiederhergestellt. Mit chown
können wir den Eigentümer wieder auf „dave“ ändern:
sudo chown dave.dave *
Wir geben Folgendes ein, um sicherzustellen, dass die korrekten Eigentumsrechte wiederhergestellt wurden:
ls -l
Testdisk: Ein Retter in der Not
Das Gefühl der Erleichterung, wenn man eine wichtige Datei wiedergefunden hat, die sich noch vor wenigen Augenblicken als unwiederbringlich verloren anfühlte, ist unbezahlbar.
Deshalb ist Testdisk ein so nützliches Werkzeug. Nachdem man sich durch die Menüs gekämpft hat und mit der Wiederherstellung von Dateien beginnen kann, gerät man schnell in einen Rhythmus: Markieren, c, C, Wiederholen.