Gibt es einen Befehl zum Wiederherstellen / Wiederherstellen gelöschter Dateien durch rm
?
$ rm -rf /path/to/myfile
Wie kann ich mich erholen myfile
? Wenn es ein solches Tool gibt, wie kann ich es verwenden?
Gibt es einen Befehl zum Wiederherstellen / Wiederherstellen gelöschter Dateien durch rm
?
$ rm -rf /path/to/myfile
Wie kann ich mich erholen myfile
? Wenn es ein solches Tool gibt, wie kann ich es verwenden?
Antworten:
Der in den Kommentaren angegebene Link ist wahrscheinlich Ihre beste Chance.
Linux debugfs Hack: Undelete Files
Diese Beschreibung, obwohl sie ein wenig einschüchternd aussieht, ist eigentlich ziemlich einfach zu folgen. Im Allgemeinen sind die Schritte wie folgt:
Verwenden Sie debugfs, um ein Dateisystemprotokoll anzuzeigen
$ debugfs -w /dev/mapper/wks01-root
Bei der Eingabeaufforderung debugfs
debugfs: lsdel
Beispielausgabe
Inode Owner Mode Size Blocks Time deleted
23601299 0 120777 3 1/ 1 Tue Mar 13 16:17:30 2012
7536655 0 120777 3 1/ 1 Tue May 1 06:21:22 2012
2 deleted inodes found.
Führen Sie den Befehl in debugfs aus
debugfs: logdump -i <7536655>
Bestimmen Sie den Inode der Dateien
...
...
....
output truncated
Fast_link_dest: bin
Blocks: (0+1): 7235938
FS block 7536642 logged at sequence 38402086, journal block 26711
(inode block for inode 7536655):
Inode: 7536655 Type: symlink Mode: 0777 Flags: 0x0 Generation: 3532221116
User: 0 Group: 0 Size: 3
File ACL: 0 Directory ACL: 0
Links: 0 Blockcount: 0
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x4f9fc732 -- Tue May 1 06:21:22 2012
atime: 0x4f9fc730 -- Tue May 1 06:21:20 2012
mtime: 0x4f9fc72f -- Tue May 1 06:21:19 2012
dtime: 0x4f9fc732 -- Tue May 1 06:21:22 2012
Fast_link_dest: bin
Blocks: (0+1): 7235938
No magic number at block 28053: end of journal.
Führen Sie mit den obigen Inode-Informationen die folgenden Befehle aus
# dd if=/dev/mapper/wks01-root of=recovered.file.001 bs=4096 count=1 skip=7235938
# file recovered.file.001
file: ASCII text, with very long lines
Dateien wurden wiederhergestellt recovered.file.001
.
Wenn dies nicht für Sie zutrifft, habe ich photorec
in der Vergangenheit Tools zum Wiederherstellen von Dateien verwendet, diese sind jedoch nur für Bilddateien vorgesehen. Ich habe ausführlich über diese Methode in meinem Blog in diesem Artikel mit dem Titel geschrieben:
debugfs -w /dev/sdb2
, lsdel
0 deleted inodes found.
extundelete
ist für ext3 / 4 einfacher und würde wahrscheinlich zu den gleichen Ergebnissen führen.
/dev/mapper/wks01-root: No such file or directory while opening filesystem
Wo hast du das /dev/mapper/wks01-root
her?
Mit ein bisschen Wahrscheinlichkeit kann ich manchmal gelöschte Dateien mit diesem Skript oder der nächsten Lösung in der Antwort wiederherstellen:
#!/bin/bash
if [[ ! $1 ]]; then
echo -e "Usage:\n\n\t$0 'file name'"
exit 1
fi
f=$(ls 2>/dev/null -l /proc/*/fd/* | fgrep "$1 (deleted" | awk '{print $9}')
if [[ $f ]]; then
echo "fd $f found..."
cp -v "$f" "$1"
else
echo >&2 "No fd found..."
exit 2
fi
Es gibt noch einen weiteren nützlichen Trick: Wenn Sie ein Muster in Ihren gelöschten Dateien kennen, geben Sie alt+ sys+ ein, resuoum neu zu starten und wieder einzuschalten. Verwenden Sie dann eine Live-CD, um grep
auf der Festplatte zu suchen:
grep -a -C 500 'known pattern' /dev/sda | tee /tmp/recover
Bearbeiten Sie dann, /tmp/recover
um nur die vorherigen Dateien zu behalten.
Hey, wenn mit der Unix-Philosophie alles Dateien sind, ist es Zeit, dies auszunutzen, nein?
grep
basierte Lösung ist sehr clever und hat bei mir funktioniert, auch wenn das Dateisystem noch eingehängt ist. Vielen Dank!
grep -av "[^[:print:]]"
grep
Lösung funktionierte für mich mit einer Modifikation: Ich tat sudo grep --line-buffered -ab "$PATTERN" /dev/sda1 | tee lines
und bekam Byte-Offsets (wie 123123123:line\n456456456:another\n...
), dann tat n=1000; sudo dd of=before if=/dev/sda1 ibs=1 skip=$[123123123-$n] count=$n
und n=1000; sudo dd of=after if=/dev/sda1 ibs=1 skip=123123123 count=$n
mit unterschiedlichen n
Werten.
Was für mich funktioniert hat, wurde von arch angegeben (gilt nur für Textdateien):
grep -a -C 200 -F 'Unique string in text file' /dev/sdXN
Wo /dev/sdXN
befindet sich die Partition, auf der sich die verlorene Datei befindet mount
?
Dauert eine Weile, hat aber funktioniert, als ich versehentlich einen Quellcode gelöscht habe, den ich noch nicht festgeschrieben hatte!
rm data/*.json python myFile.py
anstattrm data/*.json && python myFile.py
/dev/sdXN
ist für das Dateisystem, oder? Ich fand meine mitdf -T | awk '{print $1,$2,$NF}' | grep "^/dev"
grep: conflicting matchers specified
Obwohl diese Frage gelöst und einige Jahre alt ist, möchte ich das Dienstprogramm testdisk erwähnen .
Wie Sie Dateien mit testdisk wiederherstellen, erfahren Sie in diesem Tutorial . Führen testdisk /dev/sdX
Sie zum Wiederherstellen von Dateien den Partitionstabellentyp aus. Danach wählen Sie [ Advanced ] Filesystem Utils
, dann wählen Sie Ihre Partition und wählen Sie [Undelete]
. Jetzt können Sie gelöschte Dateien durchsuchen, auswählen und an einen anderen Speicherort in Ihrem Dateisystem kopieren.
Ich hatte letzte Woche das gleiche Problem und habe viele Programme ausprobiert, wie Debugfs, Photorec, Ext3Grep und Extundelete. ext3grep war das beste Programm, um Dateien wiederherzustellen. Die Syntax ist sehr einfach:
ext3grep image.img --restore-all
oder:
ext3grep /dev/sda3 --restore-all --after date -d '2015-01-01 00:00:00' '+%s' --before `date -d ‘2015-01-02 00:00:00’ ‘+%s’
Dieses Video ist ein Mini-Tutorial, das Ihnen helfen kann.
Eine Alternative kann del
anstelle von rm
zum Löschen verwendet werden:
http://fex.belwue.de/fstools/del.html
del
hat eine Wiederherstellungsfunktion und funktioniert mit jedem Dateisystem.
Natürlich ist es keine Lösung, wenn Sie Ihre Dateien bereits mit "take no prisoners" gelöscht haben. Rm: -}
del
Befehl eingeführt haben.
Laufwerk über externe Schnittstelle anschließen
umount /dev/{sd*}
extundelete --restore-all /dev/{sd*}
Weitere Informationen finden Sie unter diesem Link: Wiederherstellen einer gerade gelöschten Datei auf ext4 mit extundelete .
Wiederherstellungstools - Befehlszeile:
Wiederherstellungstools - GUI:
Infos:
Nach meiner persönlichen Erfahrung bekomme ich meine Daten mit ufs-explorer und photorec zurück
(1) = Nicht Open Source, nicht frei
(2) = Nicht Open Source, kostenlos
(3) = Open Source und kostenlos
(4) = Habe ntfs Unterstützung
(5) = Verfügt über eine Verzeichnisstrukturfunktion
Ich bin nicht einverstanden, dass es unmöglich ist, nur sehr, sehr schwierig, und ich habe es noch nie unter Linux gemacht:
Wenn Dateien gelöscht werden, werden sie tatsächlich nicht gelöscht. Was passiert ist, dass der Speicherplatz, den sie auf der Festplatte hatten, sozusagen zurückgesetzt wird, dass sich nichts beschwert, wenn der Computer versucht, Daten dort zu schreiben. Im Allgemeinen können die Daten auf Ihrer Festplatte, von denen Sie dachten, dass Sie sie gelöscht haben, fast ein Jahr später dort sein. Zumindest ist dies meine Erfahrung auf einem Windows-Computer. Ich bin mir nicht sicher, ob es unter Linux auf die gleiche Weise wie unter einer Befehlszeile funktioniert, aber Sie benötigen wahrscheinlich eine separate Live-CD, um die Partition so zu öffnen, und es gibt auch keine Garantie dafür, dass die Dateien noch vorhanden sind. Ich habe dies unter Windows XP mehrere Male mit Zero Assumption Recovery durchgeführt. Ich bin mir sicher, dass es ein ähnliches Tool gibt, wenn Sie genau hinsehen.
Wenn Sie eine Datei löschen, wird die Anzahl der Verknüpfungen in der Inode-Tabelle für diese Datei um eins verringert. Unter Unix werden die Datenblöcke für diese Datei als frei markiert, wenn die Anzahl der Verknüpfungen auf 0 abfällt. In der Regel gehen Verweise auf diese Datenblöcke verloren. Ich habe gerade aus dem Kommentar von @ fedorqui herausgefunden, dass es eine Möglichkeit gibt, auf diese Blöcke zuzugreifen, aber das gilt nur für das ext3-Dateisystem.
Eine Möglichkeit , die Dateien erhalten wird , eine Funktion zu schreiben , die es Ihnen erlaubt, zu bewegen die Dateien in einem ungenutzten Bereich (sagen wir $HOME/.trash
) und erholen sie die benötigten Dateien von dort aus . Diese Funktion kann mit Alias versehen werden rm
. Sie können einen Cron-Job einplanen, um die Dateien zu löschen, die sich für eine bestimmte Anzahl von Tagen im Papierkorb befunden haben.
Dies könnte einigen von Ihnen die Mühe ersparen.
Wenn Sie diese Datei mit gedit bearbeitet haben, wird standardmäßig eine Kopie dieser Datei erstellt.
Nehmen wir zum Beispiel an, wir haben 'myfile.txt' versehentlich gelöscht.
In dem Ordner, der die Datei enthielt, die Sie gerade gelöscht haben, verwenden Sie diese Befehle und Sie werden die Kopie von dort wiederherstellen:
ls | grep 'myfile.txt~'
Mit ein bisschen Glück werden Sie sie finden und dann:
cp 'myfile.txt~' 'myfile.txt'
Ich habe gerade eine Datei mit dieser Methode wiederhergestellt. Viel Glück!