Ext2 Undeletion Howto: http://www.linuxfaq.com/LDP/HOWTO/mini/Ext2fs-Undeletion.html


Gibt es ein Undelete unter Linux? Kann ich gelöschte Dateien wiederherstellen?

Kurze Antwort: Jein.

Im mc (MidnightCommander, siehe TextmodusSoftware) gibt es, wenn es vom System unterstützt wird, im Command Menü eine Option "Undelete files (ext2fs only)". Wenn es das bei Dir nicht gibt, hast du entweder eine zu alte mc Version oder ein Linux, welches das (noch) nicht kann bzw. nicht einkompiliert hat. Dazu sollte man sich die Hilfe durchlesen und dann kann man Dateien -- vielleicht -- wiederherstellen.

Es gibt noch andere Möglichkeiten. Manche basieren darauf, /bin/rm zu ersetzen (durch ein Skript, welches die Datei nicht löscht, sondern im Hintergrund komprimiert, in ein verstecktes Verzeichnis verschiebt und dann checkt, ob dieses Verzeichnis "zu voll" geworden ist und dann von "hinten" anfängt zu löschen). Manche basieren darauf, den Systemaufruf unlink() abzufangen (der für das "Entfernen des Dateieintrags aus der Verzeichnisliste" zuständig ist) und umzulenken.

Oder ähnliches.

Aber der Grundsatz ist wie immer: *UNIX ist der Meinung, der Benutzer weiß, was er tut.* rm fragt nicht nach, sondern löscht auch -- wenn nicht -i (interactive) angegeben wurde -- die gesamte Platte ohne Nachfrage.

Fazit:

UNIX reicht einem die Pistole, lädt vor, lädt durch, entsichert und hilft beim Zielen, man muß nur noch abdrücken. Aber wenn man dann in seinen Fuß schießt, ist das ein eigenes Problem und nicht das von UNIX. :)

JensBenecke


Ein Programm, das beim "undelete" behilflich ist, ist recover. Ein RPM der derzeit aktuellen Version findet sich bei http://www.rpmfind.net. Man sollte das Tool am besten schon installieren, bevor man die Datei versehentlich gelöscht hat, da nicht ganz auszuschließen ist, daß das betreffende File entweder beim Installieren des Programms oder sonst durch irgendetwas anderes überschrieben wird, bevor es erfolgreich recovered wurde.

Also Vorsicht! Das Programm implementiert übrigens das Ext2fs Undeletion HOWTO, das weiter unten erwähnt ist. Viel Glück!

?SixPack


Credits: Luc (http://www.saffre.f2s.com/)

Wie man (mit etwas Glück) gelöschte Dateien wieder zurück bekommt

Ich hatte aus Versehen den folgenden Befehl eingegeben:

 find -exec rm {} \;

(Ich hatte ihn mit der Maus aus einem anderen Fenster rübergeholt und wollte das 'rm' eigentlich noch durch ein 'grep' ersetzen... aber ich muss wohl das line feed am Ende der Zeile mit erwischt haben.) Plupp! Alle Dateien im aktuellen Verzeichnis, sowie die in den Unterverzeichnissen, waren in die ewigen Jagdgründe entrückt. Und in Unix gibt es kein 'undelete'.

Zum Glück war Dirk da, und mit ihm habe ich folgendes gemacht. Die gelöschten Dateien hatten alle ziemlich zu Beginn den String "Hubert fragen" enthalten, und waren sicher nicht länger als 100 Zeilen gewesen. Das war ja immerhin etwas.

 $ mount
 /dev/hdb1 on / type ext2 (rw)
 proc on /proc type proc (rw)
 /dev/hdb5 on /usr type ext2 (rw)
 /dev/hdb6 on /var type ext2 (rw)
 /dev/hdb4 on /home type ext2 (rw)
 /dev/hda1 on /dos type vfat (rw,uid=35,gid=35,umask=002,quiet)
 /dev/hdc on /cdrom type iso9660 (ro,noexec,nosuid,nodev)

 $

Meine Dateien waren irgendwo im Verzeichnis /home gewesen. Also befanden sie sich physikalisch unter /dev/hdb4.

 su

Als root anmelden.

 grep -B 10 -A 100 "Hubert fragen" /dev/hdb4 > /tmp/hubert.txt

grep sucht also jetzt in der 'Datei' /dev/hdb4 nach dem String und schreibt dann jeweils die 10 Zeilen davor und die 100 Zeilen danach zum stdout, der nach /tmp/hubert.txt umgeleitet wird. Anschließend brauchte ich die Datei /tmp/hubert bloß noch mit emacs zu bearbeiten und die Erbsen von der Spreu zu trennen. Das war zwar etwas Handarbeit, aber ich war froh, meine Dateien wieder zu haben.


Kleiner Kommentar: will man die Chancen auf ein restore erhöhen, am besten gleich den Computer abschalten. Kein shutdown, einfach power off. Anschliessend entweder per rescue disk booten und bloss filesysteme mounten, auf denen die gelöschten Dateien nicht oben sind (wenn ausreichend platz vorhanden mitt dd das gesamte device als file sichern: "dd if=/dev/hdaX of=backupfs bs=4k", dann anschliessend die obigen Prozeduren mit dem file selbst ausführen.) Sonst die greps etc. am dismounteten Filesystem durchführen, verringert die Gefahr daß etwas versehentlich überschrieben wird auf 0. Am besten untige ext2fs restore HOWTO durchlesen.

?SixPack