2 Stimmen

Wie kann man gelöschte Dateien im Linux-Dateisystem wiederherstellen (ein bisschen schneller)?

Wenn ich den folgenden Befehl ausführe, um eine verlorene Datei unter Linux wiederherzustellen:

grep -a -B 150 -A 600 "Klasse SuperCoolClass" /dev/sda10 > /tmp/SuperCoolClass.repair

Brauche ich wirklich das "-a"? Wir müssen von "sda10" einige gelöschte Dateien wiederherstellen (Sabotage) und wir haben einen Haufen davon wiederherzustellen und ich glaube, dass das Entfernen von -a schneller wäre.

Ich glaube, die Dateien befinden sich auf der Festplatte, aber nicht im Binärformat.

thx

7voto

AntonioD Punkte 547

Die Datei, an der Sie gerade arbeiten, lautet /dev/sda10 die grep binäre Daten enthalten würde. Um sie als Text zu behandeln (wonach Sie suchen), benötigen Sie die -a ansonsten grep wird einfach gedruckt Binary file /dev/sda10 matches

Da die Aufgabe zudem eher IO- als CPU-gebunden ist, würde dies in jedem Fall keinen großen Leistungsgewinn bedeuten.

In Zukunft ist es ganz einfach, so etwas selbst zu testen:

  • Dummy-Diskette mit 10Mb erstellen: dd if=/dev/zero of=testfs bs=1024 count=10000
  • Dateisystem erstellen: mkfs.ext4 testfs
  • über Loopback montieren: mount -o loop ./testfs /mnt/test/
  • Kopieren Sie einige Dinge auf das Dummy-Dateisystem
  • ausbauen: umount /mnt/test
  • laufen. grep auf die Testdatei mit verschiedenen Optionen

EDIT Mir ist gerade eingefallen, dass Sie vielleicht nach dem Befehl '/usr/bin/strings' stattdessen

etwas wie:

  • alle druckbaren Zeichenfolgen von der zerstörten Festplatte extrahieren: /usr/bin/strings -a /dev/sda10 > /tmp/recovery
  • grep auf den Text nur viele Male für verschiedene Zeichenfolgen: grep "whatever" /tmp/recovery > /tmp/recovery.whatever

2voto

jadelord Punkte 1229

Zur Wiederherstellung einer Textdatei (nur eine Textdatei), die Sie versehentlich gelöscht/überschrieben haben (vorausgesetzt, Sie erinnern sich an einen Satz in dieser Textdatei)

  • Stellen Sie die Sicherheit der Dateien sicher, indem Sie das Verzeichnis mit

    umount /home/johndoe .

  • Finden Sie heraus, auf welcher Festplattenpartition sich der Ordner befindet, z. B. sda3

  • Wechseln Sie als Root zum Terminal.

  • ausführen.

    grep -a -A800 -B800 'search this phrase' /dev/sda3 | strings>recovery_log.txt

  • Das wird eine Weile dauern. Sie können die Datei durchgehen wiederherstellungs_log.txt mit einem beliebigen Texteditor, auch während der Ausführung des Befehls.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X