Gelöschte Dateien auf dem Mac über die Befehlszeile wiederhergestellt


24

Ich habe versehentlich eine Datei gelöscht, indem ich Folgendes ausgeführt habe:

rm -rf ./Desktop/myScript.sh

Ich denke, es ist möglich, die Datei wiederherzustellen, da der rmBefehl vorübergehend entfernt. Wie kann ich die gelöschte Datei unter Mac OS X wiederherstellen?


1
Sie sollten nach HFS + -Undelete-Tools suchen, vorausgesetzt, Sie verwenden HFS +. Die Apple SE-Site weiß wahrscheinlich mehr.
Derobert

1
Anekdote, aber mein Schwiegervater hat versehentlich ein großes Verzeichnis mit Fotos unter Mac OS X gelöscht und die meisten Fotos mit einem von ihm heruntergeladenen Tool wiederhergestellt (ich glaube, es kostet Geld, hatte aber eine Testversion für ein oder zwei Dateien , so können Sie testen, ob es funktionieren wird, und in Ihrem Fall würde das ausreichen). discussion.apple.com/thread/…
ire_and_curses

Antworten:


28

MacOS ist ein Unix-Betriebssystem und rmbedeutet "Auf Wiedersehen". Über die GUI-Oberfläche können Sie eine Datei in den Papierkorb verschieben (den Sie dann wiederherstellen können), aber das haben Sie nicht getan. Wenn Sie ein Backup haben (z. B. wenn Time Machine ausgeführt wird), werden Sie gespeichert.

Klärung

Streng genommen (als @ire_and_curses Punkte out) ein rmlöscht einfach den Verzeichniseintrag für die Datei während verlassen die Plattenblöcke daran gewöhnt, unberührt. Wenn Sie das Dateisystem stilllegen können, in dem sich die Datei befunden hat, gibt es erweiterte Methoden, mit denen Sie versuchen können, den Inhalt dieser Blöcke erneut zu ermitteln. Es gibt auch einige Wiederherstellungs-Tools, mit denen Sie den Verlust beheben können. Das zentrale Problem ist, dass nichts anderes die von Ihrer Datei dargestellten Plattenblöcke wiederverwendet.

Das MacOS verfügt auch über einen sicheren Befehl zum Entfernen ( srm), der eine Datei unlinküberschreibt, bevor sie bearbeitet wird, sodass sie nicht wiederhergestellt werden kann. Ich verwende den unlinkBegriff, da dies der zugrunde liegende Systemaufruf ist, der dem rmBefehl einer Shell zugeordnet ist . Dies ist der Grundstein für den nächsten Teil dieser Diskussion.

Randnotiz

[Ich sollte mich beeilen, das hinzuzufügen, auch wenn Sie eine Disk mehrfach überschreiben, gibt es Möglichkeiten, das zu lesen, was ein Dutzend oder mehrmals zuvor geschrieben wurde. Um eine Scheibe für die Entsorgung richtig zu desinfizieren, sind ein Säurebad, ein großer Hammer und ein Schredder erforderlich. ]

unlinkWenn Sie eine Datei dekrementieren, wird die Anzahl der Inode-Links der Datei verringert. Wenn dieser Wert Null erreicht, wird die Datei aus dem Dateisystemverzeichnis gelöscht und ihre Plattenblöcke zur Wiederverwendung freigegeben. Dies geschieht nur, wenn die Datei bei keinem Prozess geöffnet ist. Für Administratoren ist es oft verwirrend festzustellen, dass ein Dateisystem sehr viel Speicherplatz belegt, der nicht durch die einfache Summierung von Plattenblöcken (mit so etwas wie du) erklärt werden kann. Meistens liegt der Grund darin, dass eine geöffnete Datei entfernt wurde, sodass sie nicht mehr in ihrem Verzeichnis dargestellt wird. Der Grund dafür ist, dass die Plattenblöcke so lange in Verwendung bleiben, bis der letzte Prozess, der die Datei verwendet, beendet wird.

Das Öffnen und sofortige unlinkSpeichern einer Datei ist eine gängige Vorgehensweise zum Erstellen sicherer, temporärer Dateien. Tools wie lsofkönnen diese ansonsten unsichtbaren Dateien verfügbar machen, wenn Sie nach Dateien mit einer Linkanzahl (NLINK) von Null suchen.

Unter Unix und Linux (von denen das MacOS ein Marken-Unix ist) rmfolgt a der Unix-Philosophie von "do-it" ohne Fanfare, wenn dies möglich ist. Das heißt, wenn Sie die Berechtigung haben, eine Datei zu entfernen (dh Ihr Verzeichnis erlaubt das Schreiben), dann rmtun Sie genau das, was Sie verlangen. Möglicherweise rm='rm -i'möchten Sie einen Shell-Alias ​​erstellen , der Sie zur Bestätigung auffordert, bevor Sie den Vorgang ausführen. Wenn Sie den -fSchalter verwenden rm, wird dies bei Bedarf außer Kraft gesetzt. Ein Alias rmist am nützlichsten, wenn Sie globlike entfernen rm *.log. Das heißt, Sie haben die Möglichkeit, eine Datei in der Liste zu überspringen.


Gut gemacht im Abschnitt "Klarstellung".
Tim

Die "Secure Erase Trash" -Funktion von Mac OS verwendet ein untersuchtes Muster, um die Quantentöpfe auf modernen rotierenden Festplatten tatsächlich zu löschen. Im Solid-State-Speicher werden die mit der Datei verknüpften Speicherblöcke mithilfe der Funktion "Trimmen" an den Anfang der Warteschlange "Löschen" im Speichercontroller gestellt. Verwenden Sie sie, wenn Sie den Inhalt wirklich von Ihrer Festplatte entfernen möchten. Beachten Sie jedoch, dass das Bereinigen einer sich drehenden Festplatte sehr lange dauert.
Wexxor

4

Abhängig von Ihrem Inhalt können Sie jedoch andere Software von Drittanbietern verwenden, z. B .:

und viele mehr.

Weitere Apps finden Sie, wenn Sie im App Store "Datenwiederherstellung" eingeben.


Weitergehende Möglichkeiten bestehen darin, OSX im Wiederherstellungsmodus zu starten (oder die Partition zu entpacken, wenn Sie können) und manuell danach zu suchen (wenn Sie sich an einen bestimmten Text aus Ihrem Skript erinnern).

Einige Beispiele:

diskutil list
sudo cat /dev/disk0s2 | strings | grep -C20 "my_stuff"

1
Gebrauchte Wonder und bekam einen Code zurück I „git sauber -f“ 'd
FIONBIO

2
Ab 2019 ist der Block-Device-Scan-Trick unter OSX aufgrund der APFS-Verschlüsselung entweder unmöglich oder schwieriger. Ich habe erfolgreich Daten auf diese Weise auf Linux: P
primehunter326
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.