Kürzlich habe ich versehentlich rm
eine Reihe von Dateien bearbeitet, und ich habe 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 rm
Befehl rückgängig zu machen ?
command-line
rm
trash
boehj
quelle
quelle
Antworten:
Nirgendwo verschwunden. Genauer gesagt, die Datei wird nicht verknüpft. Die Daten befinden sich immer noch auf der Festplatte, aber die Verknüpfung dazu wird entfernt. Früher war es möglich, die Daten abzurufen, aber heute werden die Metadaten gelöscht und nichts ist wiederherstellbar.
Es gibt keinen Mülleimer für
rm
und sollte es auch nicht geben. Wenn Sie einen Mülleimer benötigen, sollten Sie eine übergeordnete Benutzeroberfläche verwenden. Untertrash-cli
Ubuntu gibt es ein Befehlszeilendienstprogramm , aber die meiste Zeit werden GUI-Dateimanager wie Nautilus oder Dolphin verwendet, um einen Standard-Papierkorb bereitzustellen. Der Mülleimer ist selbst Standard. In Dolphin gelöschte Dateien werden im Papierkorb von Nautilus angezeigt.Dateien werden normalerweise in den Papierkorb verschoben
~/.local/share/Trash/files/
. Derrm
Befehl unter UNIX / Linux ist vergleichbar mitdel
DOS / Windows, das auch Dateien löscht und nicht in den Papierkorb verschiebt. Eine andere zu realisierende Sache ist, dass das Verschieben einer Datei zwischen Dateisystemen wie dem USB-Stick von Ihrem Festplattenlaufwerk 1) eine Kopie der Dateidaten ist, gefolgt von 2) das Aufheben der Verknüpfung der ursprünglichen Datei. Sie möchten nicht, dass Ihr Papierkorb mit diesen zusätzlichen Kopien gefüllt wird.quelle
libtrash
, um das Verhalten von rm zu ändern. Viele Skripte werdenrm
zum Bereinigen von Dateien verwendet, und Sie möchten nicht, dass diese im Papierkorb angezeigt werden. Ich empfehle einen dedizierten Befehl wietrash
aus demtrash-cli
Paket. @pedro Ich sollte hinzufügen, dass ich einmal eine Datei * in meinem Homeverzeichnis erstellt habe. Ich hatte versehentlich * angegeben, als ich es nicht erstellen sollte, und entschied mich, es mit rm * natürlich zu entfernen. Als mir klar wurde, was ich getan habe, habe ich den Befehl schnell beendet, aber es wurden bereits einige Dateien in meinem Home-Verzeichnis gelöscht.cp
, undmv
, tocp -i
und gesetzt,mv -i
wenn es als root ausgeführt wurde. Dadurch wird das Standardverhalten geändert, sodass diese Befehle immer gefragt werden, bevor vorhandene Dateien überschrieben werden. Einige Systemadministratoren haben empfohlen, diese Aliase speziell zu entfernen, damit Sie nicht das Verhalten erwarten, das auf einem anderen System, das dem Standardverhalten folgt, tödlich sein kann.Für ext3 / ext4, können Sie versuchen , Dateien mit Tools wie erholt extundelete oder ext3grep oder sogar gehen durcheinander mit den Low-Level - Strukturen manuell (nicht für das schwache des Herzens); Bei vielen Dateisystemen können Sie versuchen, nach bestimmten Mustern nach noch nicht überschriebenen Blöcken zu suchen (z. B. kann magicrescue unter anderem nach JPEG-Headern suchen). Beachten Sie, dass diese Heuristiken verwenden, um die Dateien aus den zurückgebliebenen Metadaten wiederherzustellen, sodass eine vollständige Wiederherstellung nicht garantiert werden kann - es handelt sich eher um eine Last-Chance-Wette (da diese voraussetzt, dass einige Spuren der Dateien im Journal verbleiben und die Blöcke wurden noch nicht überschrieben).
In jeder Hinsicht
rm
sind die mit entfernten Dateien verschwunden - Sie können eine solche Nekromantie ausprobieren, wie sie diese Tools bieten, aber hängen Sie nicht davon ab: Dies sind die Tools, die Sie ausprobieren müssen, wenn alles andere fehlschlägt. Grabe deine neuesten Backups besser aus (du hast Backups gemacht, richtig? Na ja, lebe und lerne ...).quelle
In Bezug auf die Rückgängigmachung der Auswirkungen von
rm
:Da die meisten Dateisysteme nur den Verweis auf die Daten entfernen und anzeigen, dass die Blöcke frei sind, können Sie versuchen, Ihre Daten direkt vom Gerät auszulesen. 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, das Sie
root
auf dem System haben, und ich vermute, dass alles, was sich über mehr als einen Dateisystemblock erstreckt (wahrscheinlich 4 KB), ziemlich mühsam wird, wenn das Dateisystem nicht verwaltet wird um die Datei (en) in zusammenhängende Blöcke zu setzen.Ich habe den Inhalt einiger Nur-Text-Dateien erfolgreich wiederhergestellt, indem ich Strings auf dem Gerät ausgeführt habe, auf dem sich das Dateisystem befand, und
grep
aus diesen Dateien mit großem Kontext (-C
) nach etwas gesucht habe . (Und kurz nach diesem Vorfall beschloss das Unternehmen, einige Ressourcen für die Implementierung von Backups aufzuwenden.)quelle
magicrescue
, die versuchen, Bilder oder Töne anhand ihrer unterschiedlichen Muster zu finden.Wann immer Sie eine Datei mit dem
rm
Befehl löschen , werden die Daten der Datei nie gelöscht. Mit anderen Worten, die Blöcke im Dateisystem, die Daten enthalten, sind noch vorhanden.Wenn Sie den
rm
Befehl ausführen , markiert das System den zu dieser Datei gehörenden Inode als unbenutzt und die Datenblöcke dieser Datei ebenfalls als unbenutzt (aber nicht gelöscht). Dieext3
meisten Felder im Inode werden jedoch auf Null gesetzt, 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 erfolgt (Sie können die Daten wiederherstellen, wenn diese Datenblöcke nicht überschrieben werden).
Weitere Informationen : Inode-Struktur , Funktionsweise des Löschens von Dateien
quelle
chattr +s
Attribut ("shred") gekennzeichnet. Es weist das Dateisystem an, diese Datei beim Löschen gezielt mit Nullen zu überschreiben. Nur einige Dateisysteme unterstützen dieses Attribut.In Unix-ähnlichen Dateisystemen (einschließlich Linux) befinden sich Dateien nicht wirklich an einem bestimmten Ort. Stattdessen verwendet das System Hardlinks, um auf Teile einer großen Datenmenge zu verweisen. Wenn Sie eine Datei erstellen, erstellen Sie auch ihren ersten Hardlink: den, der sich tatsächlich an dem Ort befindet, an dem 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 wird der Systemaufruf zum Löschen von Dateien aufgerufen
unlink()
. Das System löscht die Datei erst dann, wenn keine Hardlinks mehr vorhanden sind. Sobald der letzte Hardlink zerstört ist, sind es auch die Daten.Wohin gehen also die Dateien, die Sie löschen? Wenn noch Hardlinks vorhanden sind, befinden sich diese Dateien an der Stelle, an der sich die von Ihnen nicht gelöschten Hardlinks befinden. Wenn keine Hardlinks mehr vorhanden sind, sind die Dateien verschwunden.
quelle
Sehen Sie sich auch ~ / .snapshot an, wenn die Datei kürzlich entfernt wurde.
quelle