LINUX.ORG.RU

Восстановление файла

 


0

3

Итак, случайно удалил не тот файл с флешки. Осознав, я её отключил.

Файл «Архив.tar» размером 3,2 Гб.

R-Studio видит этот файл, если нажать на раздел диска и выбрать «Browse files». Файл перечёркнут красным цветом (типа удалён), но имеет размер 0 байт.

testdisk тоже видит его, если нажать Browse, и имя файла красным цветом. И тоже 0 байт.

Я сделал полное сканирование R-Studio, указав в Known file types - архивы tar. Ничего не найдено. А ещё я попробовал тип файлов GZip, результаты есть, но конечно без того файла, который мне нужен.

photorec навостанавливал мне кучу файлов, в том числе 4 tar-файла: 11M, 500M и 600M.

Так как же восстановить? Я могу посмотреть удалённые INODE-ы, и среди них найти INODE размером 3,2 Гб?

5 звезд, а фс сообщить не считаешь нужным.

bdfy ★★★★★ ()
Ответ на: комментарий от ZenitharChampion

Попробуй extundelete. И канешна запили образ флешки на всякий случай.

bdfy ★★★★★ ()
Ответ на: комментарий от bdfy
# extundelete /dev/sdc1 --restore-file /data/Архив.tar -o /media/data/recover/
ERROR: The specified device does not have a journal file.	This program only undeletes files from file systems with journals.extundelete: Operation not permitted when trying to load filesystem parameters
# 
ZenitharChampion ★★★★★ ()

Как удалял-то? И как прервал удаление?

Меня не раз спасала Ontrack EasyRecovery. Она виндовая, но можно пустить ее с какого хиренма. Реально спасала и не раз.

Zhbert ★★★★★ ()
Последнее исправление: Zhbert (всего исправлений: 1)
Ответ на: комментарий от ZenitharChampion

печально, не знал как она работает.

bdfy ★★★★★ ()
Ответ на: комментарий от Zhbert

Сочетание клавиш Shift-Delete. Никак не прервал. Спустя 10 секунл, отмонтировал флешку. Сейчас она подключена к компу с линуксом, который не выполняет автоматическое монтирование.

ZenitharChampion ★★★★★ ()
Ответ на: комментарий от Zhbert

Виндовое не очень-то заточено под инородные фс.

bdfy ★★★★★ ()

Можно посмотреть в сторону debugfs.

bormant ★★★★★ ()

1. Сразу сделать dd флешки и работать уже с копией.

2. Если не помогут стандартные утилиты, то попробуй binwalk.

Deleted ()
Ответ на: комментарий от bdfy

Возможно, но ЕМНИП я что-то с ее помощью с екстендеда восстанавливал.

Zhbert ★★★★★ ()
Ответ на: комментарий от ZenitharChampion

Сейчас она подключена к компу с линуксом, который не выполняет автоматическое монтирование.

Есть смысл сделать

# dd if=/dev/sdb1 of=sdb1.img conv=noerror,sync bs=8M

bormant ★★★★★ ()
Ответ на: комментарий от bormant

> Можно посмотреть в сторону debugfs.

Название внушает доверие. Попробовал инструкцию:

# debugfs /dev/sdc1
debugfs 1.42.7 (21-Jan-2013)
debugfs:  lsdel

Выдал мне 4 файла, максимальный размер 64 Кб.

Ищу другие команды. Мне бы список INODE-ов с сортировкой по размеру.

ZenitharChampion ★★★★★ ()
Последнее исправление: ZenitharChampion (всего исправлений: 2)

Что было в tar-е? Tar - это примитивный архиватор (не компрессор), все файлы должны лежать подряд без перемешиваний (я надеюсь). Возможно, стоит поискать через TestDisk/PhotoRec конкретные типы файлов по начальным байтам.

anonymous ()
Ответ на: комментарий от anonymous

Сними образ флехи dd-хой. Только не перепутай if/of!!! Потом образ закинь в ramfs/zram. Возможно, тебе придётся перебирать варианты, а образ в оперативке радикально ускорит процесс.

anonymous ()

Если это был именно tar, без компрессора сверху, вспоминайте, что было за содержимое, поищите имена в образе флешки, при помощи debugfs определить, какому inode принадлежит блок и сдампить inode. Даже если и этот вариант не пройдет, попутешествовать от найденного к началу образа в поисках начала архива. tar очень прост внутри, там все последовательно (лишь бы на ФС оно тоже лежало по порядку).
Потом можно будет выкусить фрагмент при помощи dd и отдать tar-у на проверку.

Есть смысл поискать «ustar » (в конце два пробела, без кавычек) — оно обычно присутствует в файловом префиксе внутри .tar. Сделайте подопытный .tar, посмотрите mcview в raw-hex или еще каким hex-вьювером, как довольно специфично выглядят заголовки фалов в .tar...

Важно! Попробуйте вспомнить, или определить по архивному источнику, какой каталог/файл был в .tar первым, это сильно облегчит поиск начала данных.

bormant ★★★★★ ()
Последнее исправление: bormant (всего исправлений: 2)
Ответ на: комментарий от ZenitharChampion

Качай Hiren's boot, грузись с него - там куча прог по восстановлению данных. Мне обычно какая-то из них помогала в итоге.

fcx ★★★ ()

Если ТС ещё не понял: саму флеху уже не трогай. Все действия только над образом.

anonymous ()
Ответ на: комментарий от anonymous

Можно еще сдампить с помощью UltraISO(есть на Хиренсе), потом на другую флеху раскатать ею же и уже с дублем работать.

fcx ★★★ ()
Ответ на: комментарий от fcx

С флехи катастрофически медленное чтение. Зачем такой костыль, если можно запихать в оперативку. Разница в «скорости» - порядки. Тем более, если просматривать побайтно, ещё и многократно.

anonymous ()

Кстати, сейчас же флехи новые, по сути, SSD-хи. Не исключаю, что там уже TRIM отработал =)

anonymous ()
Ответ на: комментарий от anonymous

Фигня в том - не только лишь все проги на том же Хиренсе умеют работать с образами. Некоторые только с устройством к сожалению(

fcx ★★★ ()
Ответ на: комментарий от fcx

По секретку, в Linux образ диска превращается в блочное устройство одной командой - losetup.

anonymous ()

По поводу «ustar » (количество вхождений, как и ожидалось, по количеству файловых записей архива):

# tar tf test.tar | wc -l
432
# grep -c 'ustar  '
432

bormant ★★★★★ ()
Ответ на: комментарий от anonymous

Дык я про ЛайвСД с оффтопом и поэтессами.

В лялехе-то понятно.

fcx ★★★ ()
Ответ на: комментарий от bormant

> Если это был именно tar, без компрессора сверху, вспоминайте, что было за содержимое

Я не помню. Логика подсказывает, что я переносил файлы с компа на комп. Файлов было много, и маленьких по размеру - поэтому я и сделал tar-архив. Когда Nautilus спросил меня тип сжатия, я выбрал «без него», потому что переносил с компа на комп - если бы отправлял на файлообменник, я бы сжал. Наконец, он назван «Арзив» потому, что я выделил несколько директорий и нажал «сжать».

> поищите имена в образе флешки, при помощи debugfs определить, какому inode принадлежит блок и сдампить inode

Понять бы ещё, как с ним работать. Мне бы хотелось вывести список всех inode с сортировкой по размеру. Так бы я без проблем нашёл inode с размером = 3,2 Гб, и восстановил бы именно его

ZenitharChampion ★★★★★ ()
Последнее исправление: ZenitharChampion (всего исправлений: 1)
Ответ на: комментарий от ZenitharChampion

Мне бы хотелось вывести список всех inode с сортировкой по размеру

Количество inode вам известно, команда для получения сведений об inode — тоже. За чем же дело встало?
Повторю, сделайте предварительно на образ хотя бы

 grep -c 'ustar  ' sdb1.img 
чтобы понять, сколько фрагментов претендуют на то, чтобы быть частью каталога .tar.
Возьмите тот же mcview sdb1.img в hex-режиме поищите «ustar », посмотрите, что выше них... Каталог в .tar размазан по архиву — заголовок (начинается с имени), файл, заголовок, файл, ... Заголовок крупный, в hex-режиме и 80х25 будет занимать больше экрана, посмотрите в любой .tar, чтобы иметь представление, о чем речь.

bormant ★★★★★ ()
Ответ на: комментарий от bormant

> Количество inode вам известно, команда для получения сведений об inode — тоже. За чем же дело встало?

Нет, не известна - я нуб

> Ах да, на ex3grep посмотрели?

Пока нет - картошка зовёт! Вечером посмотрю

ZenitharChampion ★★★★★ ()
Ответ на: комментарий от ZenitharChampion

Заголовок файла внутри tar выглядит примерно так (чтобы было понятие о чем речь, 0x200 байт), начало со второй строки, конец — в предпоследней, с последней пошел файл PNG:

000003F0 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 ................
00000400 6E 65 64 69 │ 74 2F 6E 65 │ 64 69 74 2F │ 6E 65 64 69 nedit/nedit/nedi
00000410 74 2E 70 6E │ 67 00 00 00 │ 00 00 00 00 │ 00 00 00 00 t.png...........
00000420 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 ................
00000430 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 ................
00000440 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 ................
00000450 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 ................
00000460 00 00 00 00 │ 30 30 30 30 │ 36 34 34 00 │ 30 30 30 31 ....0000644.0001
00000470 37 35 30 00 │ 30 30 30 30 │ 31 34 34 00 │ 30 30 30 30 750.0000144.0000
00000480 30 30 30 37 │ 34 33 36 00 │ 31 32 37 34 │ 32 35 35 33 0007436.12742553
00000490 36 35 32 00 │ 30 31 33 34 │ 35 30 00 20 │ 30 00 00 00 652.013450. 0...
000004A0 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 ................
000004B0 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 ................
000004C0 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 ................
000004D0 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 ................
000004E0 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 ................
000004F0 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 ................
00000500 00 75 73 74 │ 61 72 20 20 │ 00 75 73 65 │ 72 00 00 00 .ustar  .user...
00000510 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 ................
00000520 00 00 00 00 │ 00 00 00 00 │ 00 75 73 65 │ 72 73 00 00 .........users..
00000530 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 ................
00000540 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 ................
00000550 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 ................
00000560 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 ................
00000570 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 ................
00000580 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 ................
00000590 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 ................
000005A0 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 ................
000005B0 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 ................
000005C0 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 ................
000005D0 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 ................
000005E0 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 ................
000005F0 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 │ 00 00 00 00 ................
00000600 89 50 4E 47 │ 0D 0A 1A 0A │ 00 00 00 0D │ 49 48 44 52 .PNG........IHDR
Если б знали один из первых файлов — легко б нашли начало архива...

bormant ★★★★★ ()
Последнее исправление: bormant (всего исправлений: 1)
Ответ на: комментарий от futurama

Ну так тему я создал (кстати, пора обновить список специалистов).

ZenitharChampion ★★★★★ ()
Ответ на: комментарий от ZenitharChampion

А теперь в одну вкладку mcview 32gb.img, в другую вызовы debugfs с информацией о текущем блоке и inode.

Возможно, сперва стоит попытать счастья с ext3grep.

bormant ★★★★★ ()
Ответ на: комментарий от ZenitharChampion

Нагуглил.

 # ext3grep /dev/sdc1 --restore-all --after `date -d 'Sept 01 2017 7:00pm' '+%s'`
Running ext3grep version 0.10.2
Only show/process deleted entries if they are deleted on or after Fri Sep  1 19:00:00 2017.

ext3grep: init_consts.cc:84: void init_consts(): Assertion `(super_block.s_feature_compat & 0x0004)' failed.
Аварийный останов
# ext3grep --restore-file Архив.tar /dev/sdc1
Running ext3grep version 0.10.2
ext3grep: init_consts.cc:84: void init_consts(): Assertion `(super_block.s_feature_compat & 0x0004)' failed.
Аварийный останов
ZenitharChampion ★★★★★ ()
Последнее исправление: ZenitharChampion (всего исправлений: 1)
Ответ на: комментарий от ZenitharChampion

А почему ext3grep, если у тебя там ext4?

anonymous ()
Ответ на: комментарий от ZenitharChampion

Кстати есть ещё один вариант. tar это по сути просто набор файлов с заголовками для записи на ленту. Можно попробовать натравить сам tar на всю флешку (образ). Он вроде проскипает повреждённые файлы и вытащит уцелевшие.

ещё cpio вроде помогает

https://www.linuxquestions.org/questions/linux-software-2/recovering-files-fr...

anonymous ()

После того, как я сдампил флешку, я продолжил ей пользоваться. Загрузил с неё систему (а на ней - система), запустился fsck. И ругнулся «delete inode with zero dtime 393370», и так несколько раз. Что? Я жму Pause. Фиг вам! Я опять жму! Не встаёт! Сейчас экран отскроллится! Надо было нажимать Scroll Lock, а я не сообразил.

Система загрузилась, я запомнил несколько inode-ов. В логах хотел найти полный список, но в dmesg не нашёл, а где ещё посмотреть - не знаю.

# debugfs 32gb.img 
debugfs 1.42.7 (21-Jan-2013)
debugfs:  dump 393370 file1
393370: File not found by ext2_lookup 
debugfs:  dump 393381 file1
393381: File not found by ext2_lookup 
debugfs:  dump 393375 file1
393375: File not found by ext2_lookup 
debugfs:  dump 393371 file1
393371: File not found by ext2_lookup 
debugfs:  quit
ZenitharChampion ★★★★★ ()
Ответ на: комментарий от ZenitharChampion

man debugfs говорит, что inode надо указывать так: <inode>.
Знаки <> вокруг номера обязательны.

bormant ★★★★★ ()
Ответ на: комментарий от ZenitharChampion

Ctrl+S стопорит консоль (не всегда), Ctrl+Q размораживает, листание по Shift+PgUp/PgDn.

bormant ★★★★★ ()
Ответ на: комментарий от ZenitharChampion

Так и чего, какие новости по теме через 3 месяца? :)

Deleted ()
Ответ на: комментарий от Deleted

Я искал заголовки tar-файлов, не нашёл. И удалил дамп флешки. Похоже что этот Архив.tar был просто директорией с кучей мелких файлов, которую я переносил с компа на комп. Хоть я и не помню что именно там было.

ZenitharChampion ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.