it-swarm.com.de

Wohin gehen Dateien, wenn der Befehl rm ausgegeben wird?

Kürzlich habe ich versehentlich rm für eine Reihe von Dateien erstellt und dabei darüber nachgedacht, wo genau diese Dateien landen.

Das heißt, wenn Sie mit einer GUI arbeiten, werden gelöschte Dateien in den Papierkorb verschoben. Was ist das Äquivalent für rm und gibt es eine Möglichkeit, einen Befehl rm rückgängig zu machen?

108
boehj

Nirgendwo, verschwunden, verschwunden. Insbesondere wird die Verknüpfung der Datei aufgehoben. Die Daten befinden sich immer noch auf der Festplatte, aber der Link dazu wird entfernt. Früher war es möglich, die Daten abzurufen, aber heute werden die Metadaten gelöscht und nichts kann wiederhergestellt werden.

Es gibt keinen Papierkorb für rm und sollte es auch nicht geben. Wenn Sie einen Papierkorb benötigen, sollten Sie eine übergeordnete Schnittstelle verwenden. Es gibt ein Befehlszeilenprogramm in trash-cli Unter Ubuntu, aber meistens werden GUI-Dateimanager wie Nautilus oder Dolphin verwendet, um eine Standard-Papierkorbdose bereitzustellen. Der Mülleimer ist selbst Standard. In Dolphin gespeicherte Dateien werden im Papierkorb von Nautilus angezeigt.

Dateien werden normalerweise an einen Ort wie ~/.local/share/Trash/files/ Verschoben, wenn sie in den Papierkorb verschoben werden. Der Befehl rm unter UNIX/Linux ist vergleichbar mit del unter DOS/Windows, der auch Dateien löscht und nicht in den Papierkorb verschiebt. Eine andere zu realisierende Sache ist, dass das Verschieben einer Datei über Dateisysteme wie auf Ihr USB-Laufwerk von Ihrem Festplattenlaufwerk tatsächlich 1) eine Kopie der Dateidaten ist, gefolgt von 2) das Aufheben der Verknüpfung der Originaldatei. Sie möchten nicht, dass Ihr Papierkorb mit diesen zusätzlichen Kopien gefüllt wird.

126
penguin359

Für ext3/ext4 können Sie versuchen, Dateien mit Tools wie extundelete oder ext3grep wiederherzustellen, oder sogar messing mit den Strukturen auf niedriger Ebene - manuell (nicht für schwache Nerven); Bei vielen Dateisystemen können Sie versuchen, nach bestimmten Mustern nach den noch nicht überschriebenen Blöcken zu suchen (z. B. magicrescue kann unter anderem nach JPEG-Headern suchen). Beachten Sie, dass diese Heuristiken verwenden, um die Dateien aus den zurückgelassenen Metadaten wiederherzustellen. Daher ist eine vollständige Wiederherstellung nicht garantiert - es handelt sich eher um eine Last-Chance-Wette (da diese erfordern, dass einige Spuren der Dateien im Journal verbleiben und die Blöcke wurden noch nicht überschrieben).

Also, in jeder Hinsicht sind Dateien, die mit rm entfernt wurden, verschwunden - Sie könnten versuchen eine solche Nekromantie, wie sie diese Tools bieten, aber nicht Es hängt nicht davon ab: Dies sind die Tools, die Sie ausprobieren können, wenn alles andere fehlschlägt. Grabe deine neuesten Backups besser aus (du hast Backups gemacht, oder? Na ja, lebe und lerne ...).

In Bezug auf das Rückgängigmachen der Auswirkungen von rm:

Da die meisten Dateisysteme nur den Verweis auf die Daten entfernen und angeben, dass die Blöcke frei sind, können Sie versuchen, Ihre Daten direkt vom Gerät zu lesen. Mit etwas Glück wurden die Blöcke, die Ihre Datei (en) enthalten, nicht für etwas anderes beansprucht.

Dies setzt voraus, dass Sie etwas ziemlich Einzigartiges suchen müssen, dass Sie root auf dem System haben, und ich vermute, dass das Zusammensetzen von allem, was mehr als einen Dateisystemblock umfasst (wahrscheinlich 4 KB), ziemlich mühsam werden kann, wenn das Das Dateisystem hat es nicht geschafft, die Datei (en) in zusammenhängende Blöcke zu legen.

Ich habe den Inhalt einiger Klartextdateien erfolgreich wiederhergestellt, indem ich Zeichenfolgen auf dem Gerät ausgeführt habe, auf dem sich das Dateisystem befand, und mit grep nach etwas aus diesen Dateien mit einem großen Kontext gesucht habe (-C). (Und kurz nach diesem Vorfall beschloss das Unternehmen, einige Ressourcen für die Implementierung von Backups aufzuwenden.)

8

Wenn Sie eine Datei mit dem Befehl rm löschen, werden die Daten der Datei niemals gelöscht. Mit anderen Worten, die Blöcke im Dateisystem, die Daten enthalten, sind noch vorhanden.

Wenn Sie den Befehl rm ausführen, markiert das System den zu dieser Datei gehörenden Inode als nicht verwendet und die Datenblöcke dieser Datei ebenfalls als nicht verwendet (aber nicht gelöscht). Jedoch ext3 setzt die meisten Felder im Inode auf Null, wenn eine Datei gelöscht wird.

Diese normale Markierung von nicht verwendet erfolgt für die Geschwindigkeit ... Andernfalls dauert das Löschen etwas länger. Aus diesem Grund haben Sie möglicherweise festgestellt, dass das Löschen auch großer Dateien schneller ist (Sie können die Daten wiederherstellen, wenn diese Datenblöcke nicht überschrieben werden).

Weitere Informationen: Inode-Struktur , Funktionsweise des Löschens von Dateien

6
sarath

In Unix-ähnlichen Dateisystemen (einschließlich Linux) befinden sich Dateien nicht wirklich "an" einem bestimmten Ort. Stattdessen verwendet das System Hardlinks, um auf Teile eines großen Datenblobs zu verweisen. Wenn Sie also eine Datei erstellen, erstellen Sie auch den ersten Hardlink: den, der sich tatsächlich an der Stelle befindet, an der Sie die Datei "gespeichert" haben. Wenn Sie mehr Hardlinks erstellen, ist die Datei nach Kenntnis des Systems tatsächlich an mehreren Stellen gleichzeitig vorhanden.

Wenn Sie eine Datei "löschen", löschen Sie normalerweise nur den Hardlink, der an der von Ihnen angegebenen Stelle vorhanden war. Aus diesem Grund heißt der Systemaufruf zum Löschen von Dateien unlink(). Das System löscht die Datei erst dann, wenn keine Hardlinks mehr vorhanden sind. Aber sobald dieser letzte Hardlink zerstört ist, sind auch die Daten zerstört.

Wohin gehen die gelöschten Dateien? Wenn noch Hardlinks vorhanden sind, befinden sich diese Dateien überall dort, wo sich die Hardlinks befinden, die Sie nicht gelöscht haben. Wenn keine Hardlinks mehr vorhanden sind, sind die Dateien verschwunden.

3
The Spooniest

Überprüfen Sie auch ~/.snapshot, ob die Datei kürzlich entfernt wurde.

0
Andy