So stellen Sie gelöschte Dateien unter Linux mit testdisk wieder her

Haben Sie schon einmal eine Datei gelöscht und es sofort bereut? Du brauchst es zurück, und zwar schnell! Was aber, wenn die Datei so neu ist, dass sie noch nicht gesichert wurde? Glücklicherweise gibt es etwas, was Sie dagegen tun können.

rm: Abkürzung für Reue?

Es ist allzu einfach, den rm-Befehl zu verwenden und mit einem sich vertiefenden Gefühl des Bedauerns auf ein Terminalfenster zu starren. Ein kleiner Fehler mit Platzhaltern, und Sie können viel mehr auslöschen, als Sie beabsichtigt haben.

Das Standard-Linux-Dateisystem, ext4, verwendet Inodes, um Daten über jede Datei zu speichern, und eine Inode-Tabelle, um die Inodes zu verfolgen. Der Inode enthält Metadaten über die Datei, z. B. ihren Namen, wem sie gehört, welche Berechtigungen sie hat und so weiter.

Es enthält auch Einstiegspunkte zu festen Links, die auf die Datei verweisen. Jede Datei hat mindestens einen festen Link. Jedes Mal, wenn Sie einen neuen Hardlink erstellen, erhöht sich die Anzahl der Hardlinks um eins. Jedes Mal, wenn Sie einen Hardlink entfernen, wird die Anzahl der Hardlinks im Inode um eins reduziert.

Wenn Sie eine Datei löschen, die der Inode als unbenutzt (und zur Wiederverwendung bereit) markiert hat, wird der letzte harte Link entfernt. In diesem Fall wird die Datei nicht in Verzeichnislisten angezeigt und kann nicht verwendet oder aufgerufen werden.

Die Daten, aus denen sich der Inhalt der Datei zusammensetzt, sind jedoch immer noch auf der Festplatte vorhanden. Wenn Sie den Inode jedoch so patchen könnten, dass er die richtigen Informationen enthält, würde die Datei wiederhergestellt. Dies würde natürlich nur funktionieren, wenn die Daten, aus denen die Datei auf der Festplatte besteht, intakt bleiben und nicht überschrieben werden.

Alternativ könnten Sie einen neuen Inode erstellen, die verbleibenden Daten aus dem alten Inode kopieren und dann die fehlenden Bits ersetzen.

Das sind nicht triviale Aktivitäten. Wenn Sie eine Datei versehentlich löschen, geschieht dies normalerweise im ungünstigsten Moment. Es ist immer, wenn Sie diese Datei brauchen, und Sie brauchen sie jetzt. Sie haben keine Zeit, sich mit Sektor-Editoren und anderen Dienstprogrammen zu beschäftigen. Plus, wenn es eine Datei ist, die Sie gerade erstellt haben, wurde sie wahrscheinlich noch nicht gesichert, also werden Ihnen diese auch nicht helfen.

Hier kommt testdisk ins Spiel. Es ist einfach zu bedienen und erfordert keine detaillierten, niedrigen Kenntnisse des Dateisystems. Werfen wir einen Blick darauf, wie man es benutzt!

testdisk installieren

Verwenden Sie diesen Befehl, um Testdisk unter Ubuntu zu installieren:

sudo apt-get install testdisk

Auf Fedora müssen Sie Folgendes eingeben:

sudo dnf install testdisk

Auf Manjaro müssen Sie Pacman verwenden:

sudo pacman -Sy testdisk

Verwenden von Testdisk

Obwohl es in einem Terminalfenster läuft, hat testdisk eine rudimentäre Schnittstelle. Sie verwenden die Pfeiltasten zum Navigieren und die Eingabetaste, um eine Auswahl zu treffen. Um die Dinge ordentlich zu halten, ist es am besten, ein Verzeichnis für wiederhergestellte Dateien zu erstellen.

Wir geben Folgendes ein, um ein Verzeichnis namens „restored“ für unsere wiederhergestellten Dateien zu erstellen:

mkdir restored

Wir geben Folgendes ein, um in das neue Verzeichnis zu wechseln und von dort aus testdisk zu starten:

cd restored/

Wir müssen sudo mit testdisk verwenden, also geben wir Folgendes ein:

sudo testdisk

Die erste Frage, die testdisk stellt, betrifft die Protokollierung. Es kann eine neue Protokolldatei erstellen, eine vorhandene verwenden oder überhaupt nichts protokollieren. Es spielt keine Rolle, welche Option Sie wählen; es hat keinen Einfluss auf die Funktionsweise von testdisk.

Sie können einfach die Eingabetaste drücken, um die hervorgehobene Option zu akzeptieren und eine neue Protokolldatei zu erstellen. Es wird in dem Verzeichnis erstellt, aus dem Sie testdisk gestartet haben. Bei der Auswahl fragt testdisk nach, auf welcher Festplatte sich das Dateisystem befindet, auf dem Sie arbeiten möchten.

Es listet die Festplatten auf, die es finden kann, sowie die squashfs „/dev/loop“-Dateien. Für jede Anwendung, die Sie im Handumdrehen installiert haben, gibt es eine davon. Sie sind schreibgeschützt, daher sollten Sie es nicht geschafft haben, etwas aus diesen Dateisystemen zu löschen.

In diesem Testcomputer gibt es nur eine physische Festplatte, daher haben wir den Abwärtspfeil verwendet, um die Option „/dev/sda“ hervorzuheben. Wir haben dann mit dem Rechtspfeil „Fortfahren“ ausgewählt und dann die Eingabetaste gedrückt.

testdisk muss auch den Partitionstyp kennen. Es zeigt ein Menü mit Optionen zusammen mit dem Partitionstyp, der unten automatisch erkannt wird.

Sofern Sie keinen triftigen Grund dagegen haben, markieren Sie den automatisch erkannten Partitionstyp und drücken Sie dann die Eingabetaste.

Markieren Sie im angezeigten Funktionsmenü „Erweitert“ und drücken Sie die 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 mehr haben.

Wählen Sie die Partition aus, auf der sich Ihre Dateien befanden, verwenden Sie die linke und rechte Pfeiltaste, um „Liste“ auszuwählen, und drücken Sie dann die Eingabetaste. Das Dateiauswahlmenü erscheint.

Verwenden Sie die Aufwärts- 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 aufzurufen, und den Linkspfeil oder Esc, um ein Verzeichnis zu verlassen.

Wir suchen nach Dateien, die Dave gehörten. Die Dateien für alle Benutzerkonten befinden sich im „Home“-Verzeichnis. Wir markieren also das Verzeichnis „Home“ und können dann entweder den Rechtspfeil oder die Eingabetaste drücken, um dieses Verzeichnis aufzurufen.

Dann werden uns alle Benutzerkonten aufgelistet. Wir markieren dave und drücken dann den Rechtspfeil oder die Eingabetaste, um dieses Verzeichnis aufzurufen.

Wir können jetzt die Dateien sehen, die zum Dave-Konto gehören. Die Einträge in Rot 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 einfach und drücken Sie dann c (Kleinbuchstaben).

Die Anzeige ändert sich und fordert Sie auf, ein Ziel für die wiederhergestellte Datei auszuwählen. Da wir ein Verzeichnis namens „Restored“ erstellt und Testdisk daraus gestartet haben, ist der erste Eintrag in der Liste (.) dieses Verzeichnis. Um diese gelöschte Datei in diesem Verzeichnis wiederherzustellen, drücken wir C (Großbuchstaben).

Danach kehren Sie zur Dateiauswahlanzeige zurück. Wenn Sie weitere Dateien wiederherstellen möchten, wiederholen Sie einfach den Vorgang. Markieren Sie eine gelöschte Datei, drücken Sie c (Kleinbuchstaben), um sie zu kopieren, und drücken Sie dann C (Großbuchstaben), um sie wiederherzustellen.

Arbeiten mit wiederhergestellten Dateien

Nachdem Sie eine Datei wiederhergestellt haben, wird der Verzeichnisbaum an seinem ursprünglichen Speicherort rekonstruiert, was nützlich ist, da es Sie daran erinnert, wo auf der Festplatte sich die ursprüngliche Datei befand. Das bedeutet, wenn Sie es zurückkopieren müssen, wissen Sie, wo Sie es ablegen müssen.

Wenn Sie eine Reihe von Dateien von verschiedenen Speicherorten im Dateisystem wiederherstellen, die zufällig denselben Dateinamen haben, müssen sie ohnehin separat gespeichert werden.

Sie können Folgendes eingeben, um den Inhalt des Verzeichnisses „Wiederhergestellt“ anzuzeigen:

ls

Wenn Sie Testdisk aufgefordert haben, eine Protokolldatei zu erstellen, befindet sie sich im Verzeichnis „Restored“. Da sich unsere wiederhergestellten Dateien unter „/home/dave“ befanden, wurden sie in unser „Restored“-Verzeichnis kopiert, verschachtelt in Verzeichnissen mit demselben Namen.

Mit cd können wir in das kopierte „dave“-Verzeichnis wechseln. Stellen Sie sicher, dass Sie keinen führenden Schrägstrich (/) in den Pfad einfügen – Sie möchten in das lokale „Home“ wechseln, nicht in das System „/home“.

Wir geben Folgendes ein:

cd home/dave

Die wiederhergestellten Dateien befinden sich in diesem Verzeichnis, also geben wir Folgendes ein:

ls

Werfen wir einen weiteren Blick auf die wiederhergestellten Dateien mit der Option -l (Long Listing):

ls-l

Da wir sudo zum Starten von testdisk verwendet haben, wurden die wiederhergestellten Dateien mit „root“ als Eigentümer wiederhergestellt. Wir können den Besitzer mit chown wieder auf „dave“ ändern:

sudo chown dave.dave *

Wir geben Folgendes ein, um sicherzustellen, dass der korrekte Besitz wiederhergestellt wurde:

ls -l

testdisk: Code zur Erleichterung

Dieses Gefühl der Erleichterung, nachdem Sie eine wichtige Datei wiedererlangt haben, die sich noch vor wenigen Augenblicken als unwiederbringlich verloren angefühlt hat, werden Sie immer zu schätzen wissen.

Aus diesem Grund ist Testdisk ein so praktisches Dienstprogramm. Nachdem Sie es durch die Menüs geschafft haben und mit dem Wiederherstellen von Dateien beginnen können, ist es leicht, in einen Rhythmus von Highlight, C, C, Repeat zu verfallen.