Odkaz, který někdo uvedl v komentářích, je pravděpodobně vaše nejlepší šance.
Linux debugfs Hack:Undelete Files
Tento zápis, i když vypadá trochu zastrašující, je ve skutečnosti poměrně přímočarý. Obecně jsou kroky následující:
-
Použijte debugfs k zobrazení protokolu souborových systémů
$ debugfs -w /dev/mapper/wks01-root
-
Na výzvu debugfs
debugfs: lsdel
-
Ukázkový výstup
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.
-
Spusťte příkaz v debugfs
debugfs: logdump -i <7536655>
-
Určete inode souborů
... ... .... 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.
-
S výše uvedenými informacemi o inode spusťte následující příkazy
# 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
Soubory byly obnoveny na recovered.file.001
.
Další možnosti
Pokud výše uvedené není pro vás, použil jsem nástroje jako photorec
obnovit soubory v minulosti, ale je zaměřen pouze na soubory obrázků. O této metodě jsem rozsáhle psal na svém blogu v tomto článku s názvem:
Jak obnovit poškozené soubory jpeg a mov z karty SDD digitálního fotoaparátu na Fedora/CentOS/RHEL.
S trochou šancí se mi někdy podaří obnovit smazané soubory pomocí tohoto skriptu nebo dalšího řešení v odpovědi:
#!/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
Existuje další užitečný trik:pokud znáte vzor ve smazaných souborech, napište alt +sys +resuo pro reboot+remount pouze pro čtení a poté s live-cd použijte grep
pro vyhledávání na pevném disku:
grep -a -C 500 'known pattern' /dev/sda | tee /tmp/recover
pak upravte /tmp/recover
zachovat pouze to, co byly vaše soubory dříve.
Hej, pokud s filozofií unixu jsou všechno soubory, je čas toho využít, ne?
To, co mi fungovalo, dal arch (platí pouze pro textové soubory):
grep -a -C 200 -F 'Unique string in text file' /dev/sdXN
kde /dev/sdXN
je oddíl obsahující ztracený soubor (zkontrolujte mount
pokud si nejste jisti).
Chvíli to trvá, ale fungovalo to, když jsem omylem smazal nějaký zdrojový kód, který jsem ještě nespáchal!