Linux: Versehentlich gelöschte Textdateien wiederherstellen

Ich möchte hier kurz beschreiben, wie versehentlich gelöschte Textdateien wiederhergestellt werden können.

Es muss lediglich eine (eindeutige) Textpassage bekannt sein.

Folgende Schritte sind dazu notwendig:

  1. Die betroffene Partition, auf der sich die Datei befindet, aushängen. Dabei sollte möglichst nicht mehr auf die Partition geschrieben werden. Kann man die Partition nicht aushängen, weil wichtige Systemkomponenten darauf zugreifen, muss entschieden werden ob der Server heruntergefahren wird oder einfach der Stecker gezogen wird.
  2. Optional: Wenn ein USB-Stick oder kleinere Partitionen davon betroffen sind kann mit dd if=/dev/partition of=/root/partition.img z.B. ein Image erstellt werden. Somit kann sicher mit dem Image gearbeitet werden
  3. Der Trick: Mit
    grep –a –A 100 –B 100 ‚Inhalt einer Zeile z.B. #!/bin/bash‘ /dev/sda1 > /pfad/zu/recovery.txt
    kann die Partition direkt nach Textdateien durchsucht werden.

    Dabei versucht grep (mit der Option -a) Binär als Text zu interpretieren. Mit -A und -B 100 wird angegeben wie viele Zeilen zusätzlich davor und danach ausgegeben werden.

  4. Nach ein wenig Geduld kann die Datei recovery.txt analysiert (mit vi z.B.) und die gewünschten Textelemente heraus kopiert werden.
  5. Nachdem alle Textelemente wieder zusammengetragen wurden muss die Datei auf der Partition wieder an Ort und Stelle geschoben und die Rechte angepasst werden.

Der Zeitaufwand betrug für mich ~10min bei einer 2GB großen Partition. Die meiste Zeit habe ich mit warten auf den grep-Befehl verbracht.

Auszug aus dem Manual zu grep:

-A NUM, –after-context=NUM

Print NUM lines of trailing context after matching lines.
Places a line containing — between contiguous groups of
matches.

-a, –text

Process a binary file as if it were text; this is equivalent to
the –binary-files=text option.

-B NUM, –before-context=NUM

Print NUM lines of leading context before matching lines.
Places a line containing — between contiguous groups of
matches.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Time limit is exhausted. Please reload the CAPTCHA.