{imgicourl}{zamok}
  
AnyFs tools - восстановление удалённых файлов в GNU/Linux. (23 марта 2008 года)

На днях нужно было привести в порядок файлы на винчестере. Необходимые имена файлов были собраны find'ом по -iregex «.*[0-9][0-9][0-9]\/dump.rar». Найденные имена файлов были сохранены в /tmp/dumps.txt. Осталось только слить всё найденное в определённый каталог. Я быстренько наваял вот такую строчку:

perl -e 'open (IN, ") { chomp ($_); system («mv -vf '\''$_'\'' /tmp/DUMPs/"); }'

и запустил её на выполнение. Когда перемещение подходило к концу, я вдруг понимаю, что все найденные файлы переносятся в один и тот же файл /tmp/DUMPs/dump.rar. Осознав это, я примерно за 3 секунды прервал выполнение команды и отмонтировал разделы с данными.

Как восстановить данные? Файловые системы — ext3, reiserfs, xfs. Я вспомнил, что на linux.org.ru что-то в новостях пробегало про anyfs-tools. Эти утилиты мне помогли. Порядок действий:

— скачиваем с сайта проекта http://anyfs-tools.sourceforge.net/ исходные тексты.
— компилируем и устанавливаем (для Debian GNU/Linux в исходниках есть всё необходимое, так что просто: dpkg-buildpackage -rfakeroot).
— монтируем нужную файловую систему (с атрибутом ro).
— строим таблицу inode'ов:

build_it <точка монтирования нужной фс> /tmp/<файл inodов>
— запускаем реставрацию файлов:

anysurrect -i <файл inodов> -t archieve_RAR -p tmp-RAR /dev/<устройство файловой системы, например sda1> <выходной файл inodeов>
— монтируем /dev/<устройство файловой системы, например sda1> используя файловую систему any и сгенерированный на предыдущем этапе <выходной файл inodeов>

anyfuse <выходной файл inodeов> /dev/<устройство файловой системы, например sda1> /tmp/1/
— в каталоге /tmp/1/tmp-RARarchieves/RAR/ получаем восстановленные rar'ы (имена их — что-то вроде inode_2312431_block_231321).
— далее простеньким скриптиком выцепляем «живые» rar'ы (используя rar t <имя файла архива>, если $? == 0 — то архив в порядке)
— а вот дальше надо скопировать и переименовать «живые» rar'ы. разработчики anyfs-tools рекомендуют переодически собирать статистику файловой системы в виде:

<имя файла> <контрольная сумма>

при наличии файла с такой статистикой проблем с переименованием вообще не возникает.
у меня такого файла статистики не было, но по файлам в архиве можно было безошибочно вычислить имя каталога, в котором лежал архив, так что мне повезло :)

Вот собственно и всё :)

   
Оставить комментарий