Восстановление данных ext4 со структурой каталогов (GParted, незавершённая задача)

Софт под Linux, разные программы, но только связанные с Linux

Модератор: /dev/random

Аватара пользователя
ReSeR
Сообщения: 383
ОС: GNU Debian

Восстановление данных ext4 со структурой каталогов

Сообщение ReSeR »

Требовалось объединить два раздела с ext4 в один.
В Gparted было выбрано удаление первого (пустого) раздела, второму было выбрано Resize (увеличение на всё оставшееся пространство). Во время выполнения пропало напряжение и после включения ПК, Gparted сказал, что нужно проверить на ошибки раздел. И после проверки на разделе остались живы только 7 файлов из ~40.000. Последнее, что делал Gparted, так это было перемещение файлов (из конца раздела в начало или наоборот, точно не помню). Теперь на диске есть этот большой раздел (объединенный один из двух), но без данных.
Пробовал:
tune2fs -O ^has_journal /dev/... - не отпустило.
Программы:
extundelete
photorec
UFS Explorer
DiskGetor Data Recovery
EASEUS Data Recovery Wizard Professional 5.0.1
Stellar Phoenix Linux Data Recovery
R-Linux

но все они восстанавливают файлы без структуры каталогов.
Точно знаю, с подобными проблемами я не один такой, по этому прошу бывалых поделиться опытом.
В общем, помогите пожалуйста, я в отчаянии.
Бэкап - акт проявления трусости.
Спасибо сказали:
kyzic
Сообщения: 8
ОС: Kubuntu Linux

Re: Восстановление данных ext4 со структурой каталогов

Сообщение kyzic »

помогите пожалуйста, я в отчаянии.

Бэкап - акт проявления трусости.

пробовал восстанавливать, хорошего решения под линуксом не нашел. под винду есть какая-то прога (легко найдешь поиском), вроде неплохо восстанавливает, но платная проприентарщина. я в общем-то забил, ибо игра не стоит свеч в моем случае.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21527
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Восстановление данных ext4 со структурой каталогов

Сообщение Bizdelnick »

testdisk пробовали? Хотя с таким случаем он может не справиться, но тогда уже ничто не поможет.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
ReSeR
Сообщения: 383
ОС: GNU Debian

Re: Восстановление данных ext4 со структурой каталогов

Сообщение ReSeR »

Вы имеете в виду "photorec" из комплекта "testdisk"? Если да, то пробовал, она восстанавливает файлы без структуры. Или может ей нужно параметры указать какие?
Бэкап - акт проявления трусости.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21527
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Восстановление данных ext4 со структурой каталогов

Сообщение Bizdelnick »

Я имею в виду именно testdisk.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
ReSeR
Сообщения: 383
ОС: GNU Debian

Re: Восстановление данных ext4 со структурой каталогов

Сообщение ReSeR »

Нет. Сейчас попробую.
Бэкап - акт проявления трусости.
Спасибо сказали:
Аватара пользователя
ReSeR
Сообщения: 383
ОС: GNU Debian

Re: Восстановление данных ext4 со структурой каталогов

Сообщение ReSeR »

Как в доке сказано, запустил testdisk, выбрал Advanced и тот раздел с которого хочу восстановить. Но в доке есть пункт Undelete, а у меня нет. Выкачал с офф сайта последнюю версию, но и там Undelete нет. Выбрал в меню Advanced, пункт Superblock. Он мне выдал:

Код: Выделить всё

     Partition                  Start        End    Size in sectors

  Linux                 2743 138 20 14593  66  1  190365696 [home]
superblock 0, blocksize=4096 [home]
superblock 32768, blocksize=4096 [home]
superblock 98304, blocksize=4096 [home]
superblock 163840, blocksize=4096 [home]
superblock 229376, blocksize=4096 [home]
superblock 294912, blocksize=4096 [home]
superblock 819200, blocksize=4096 [home]
superblock 884736, blocksize=4096 [home]
superblock 1605632, blocksize=4096 [home]
superblock 2654208, blocksize=4096 [home]

To repair the filesystem using alternate superblock, run
fsck.ext4 -p -b superblock -B blocksize device


Если сделать

Код: Выделить всё

fsck.ext4 -p -b superblock -B blocksize device
хуже не сделаю?
Бэкап - акт проявления трусости.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Восстановление данных ext4 со структурой каталогов

Сообщение drBatty »

может и сделаете хуже. Надо над образом делать. У вас больше нет вариантов. Платные программы венды не помогут - ext4
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5498
ОС: Gentoo

Re: Восстановление данных ext4 со структурой каталогов

Сообщение /dev/random »

Перемещение начала раздела влево (как в вашем случае) производится следующим образом.

Первоначальное состояние:
---|12345678|---

Здесь символы | обозначают границы раздела, а цифры - блоки ФС. Разумеется, на самом деле этих блоков гораздо больше.

Вначале удаляется раздел и пересоздаётся с изменёнными границами:
|---12345678|---

Затем начинают перемещаться блоки:
|1--12345678|---
|12-12345678|---
|12312345678|---
(назовём этот момент границей восстановления, ниже начинается запись поверх старых блоков)
|12342345678|---
|12345345678|---
|12345645678|---
|12345675678|---
|12345678678|---

Затем запись о размере ФС меняется, и блоки в конце регистрируются как новые, пустые блоки:
|123456789AB|---
Перемещение завершено.

Если перемещение было прервано, то ФС оказывается в одном из промежуточых состояний. Обратите внимание, что ФС ссылается на свои блоки по позиции относительно начала раздела, а в результате такого прерывания многие блоки оказываются не там, где надо. ФС испорчена.

Если выполнение прервалось _до_ "границы восстановления" (см. выше), то восстановить ФС несложно. Достаточно удалить раздел и пересоздать его в точности там, где он был первоначально, байт-в-байт:
-12|12345678|---
и ФС становится работоспособной. Если вы не помните, где был раздел, то такие инструменты, как testdisk, могут помочь найти нужную позицию. Нужно просто удалить раздел и включить восстановление. Программа найдёт несколько позиций, где могла начинаться ФС, и из них следует выбрать правильную.

Но если выполнение прервалось на позднем этапе, то этот способ не поможет:
-12|45345678|---
Очевидно, что то, что здесь находится между ||, не является файловой системой. Здесь уже невозможно не только автоматическое, но даже полуавтоматическое восстановление. Только ручное, выполняемое человеком, хорошо разбирающимся в структуре данной ФС. Необходимо выяснить, какие блоки были перемещены, и переместить их обратно. Ни один автоматический инструмент этого не сделает.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Восстановление данных ext4 со структурой каталогов

Сообщение drBatty »

/dev/random писал(а):
14.11.2011 06:22
Только ручное, выполняемое человеком, хорошо разбирающимся в структуре данной ФС.

надо ещё знать как GParted это делает...
проще photorec.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
ReSeR
Сообщения: 383
ОС: GNU Debian

Re: Восстановление данных ext4 со структурой каталогов

Сообщение ReSeR »

/dev/random писал(а):
14.11.2011 06:22
Если вы не помните, где был раздел, то такие инструменты, как testdisk, могут помочь найти нужную позицию. Нужно просто удалить раздел и включить восстановление. Программа найдёт несколько позиций, где могла начинаться ФС, и из них следует выбрать правильную.

Стоит попробовать.

drBatty писал(а):
14.11.2011 06:43
/dev/random писал(а):
14.11.2011 06:22
Только ручное, выполняемое человеком, хорошо разбирающимся в структуре данной ФС.

надо ещё знать как GParted это делает...
проще photorec.

photorec восстановил мне кучу фалов, ещё не разбирал что толкового он восстановил. Но все они сложены хаотично и именуются символьно-цифровым способом (я так полагаю, по номерам inode).
Имена файлов никак вытащить ему не под силу?
Бэкап - акт проявления трусости.
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5498
ОС: Gentoo

Re: Восстановление данных ext4 со структурой каталогов

Сообщение /dev/random »

ReSeR писал(а):
14.11.2011 12:01
Но все они сложены хаотично и именуются символьно-цифровым способом (я так полагаю, по номерам inode).

Нет, не по номерам inode. Если ФС убита в хлам (как в описанном выше случае, при прерывании после "границы восстановления"), то такого понятия, как "файл", на ней больше нет. Подобные программы ищут не файлы, а последовательности байтов, похожие на содержимое файлов определённого типа, и выдирают их, сохраняя в файлы с бессмысленными именами. Причём если файл был фрагментирован, то в этом "хламе" соответствующей ему последовательности байтов не будет (точнее, будет несколько её кусков, в разных местах), и восстановить его этим способом нельзя. Но даже если он не был фрагментирован, то это всё равно не файл, и говорить о именах или даже номерах инодов совершенно бессмысленно.
И, кстати, это _единственный_ не-ручной способ восстановления данных в ситуации, когда саму ФС спасти невозможно. Например, если питание у вас отключилось после описанной выше "границы восстановления".
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Восстановление данных ext4 со структурой каталогов

Сообщение drBatty »

ReSeR писал(а):
14.11.2011 12:01
Имена файлов никак вытащить ему не под силу?

имена файлов хранятся не в файлах, а в каталогах. Каталог в EXT4 имеет сложную нерегулярную структуру, и photorec'ом НЕ выдирается. К сожалению. В принципе можно написать программу, которая восстанавливает каталоги (а следовательно и имена файлов и их иноды), но насколько я знаю, этим никто не озаботился.

По идее, если сделать образ диска, то можно восстановить так:
1. testdisk'ом ищем один из суперблоков, и его выбираем.
2. восстанавливаем ФС командой fsck.ext4
3. если ничего не получилось (или получилось не всё) GoTo 1.
/dev/random писал(а):
14.11.2011 12:15
И, кстати, это _единственный_ не-ручной способ восстановления данных в ситуации, когда саму ФС спасти невозможно. Например, если питание у вас отключилось после описанной выше "границы восстановления".

не, ну почему-же? за границей восстановления наверняка остался хотя-бы один суперблок, который восстановит все таблицы инодов, которые лежат полностью за этой границей. Ну а по таблице инодов можно восстановить многие файлы (в т.ч. и каталоги), опять-таки за этой границей. Правда это всё теория. На практике проще развернуть бекап. :)
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
ReSeR
Сообщения: 383
ОС: GNU Debian

Re: Восстановление данных ext4 со структурой каталогов

Сообщение ReSeR »

/dev/random писал(а):
14.11.2011 12:15
И, кстати, это _единственный_ не-ручной способ восстановления данных в ситуации, когда саму ФС спасти невозможно. Например, если питание у вас отключилось после описанной выше "границы восстановления".

На сколько я помню, Gparted оставалось последнее перемещение данных. Так как из уже выполненных действий было: удаление пустого раздела, какое-то перемещение данных, увеличение границ раздела на все оставшееся пространство, и после это (так полагаю последнее) перемещение данных во время которого всё и рухнуло.

drBatty писал(а):
14.11.2011 13:16
не, ну почему-же? за границей восстановления наверняка остался хотя-бы один суперблок, который восстановит все таблицы инодов, которые лежат полностью за этой границей. Ну а по таблице инодов можно восстановить многие файлы (в т.ч. и каталоги), опять-таки за этой границей. Правда это всё теория. На практике проще развернуть бекап. :)

Получается если testdisk мне выдаёт:

Код: Выделить всё

     Partition                  Start        End    Size in sectors

  Linux                 2743 138 20 14593  66  1  190365696 [home]
superblock 0, blocksize=4096 [home]
superblock 32768, blocksize=4096 [home]
superblock 98304, blocksize=4096 [home]
superblock 163840, blocksize=4096 [home]
superblock 229376, blocksize=4096 [home]
superblock 294912, blocksize=4096 [home]
superblock 819200, blocksize=4096 [home]
superblock 884736, blocksize=4096 [home]
superblock 1605632, blocksize=4096 [home]
superblock 2654208, blocksize=4096 [home]

To repair the filesystem using alternate superblock, run
fsck.ext4 -p -b superblock -B blocksize device

то лучше попробовать восстановить по суперблоку?
Бэкап - акт проявления трусости.
Спасибо сказали:
Аватара пользователя
ReSeR
Сообщения: 383
ОС: GNU Debian

Re: Восстановление данных ext4 со структурой каталогов

Сообщение ReSeR »

Чем лучше сделать образ? Можно просто dd?
Бэкап - акт проявления трусости.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Восстановление данных ext4 со структурой каталогов

Сообщение sash-kan »

ReSeR писал(а):
14.11.2011 21:48
Можно просто dd?
можно просто cp·
эффект тот же, а писать (аргументы) меньше·
так зачем платить больше? ©
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5498
ОС: Gentoo

Re: Восстановление данных ext4 со структурой каталогов

Сообщение /dev/random »

sash-kan писал(а):
14.11.2011 22:27
ReSeR писал(а):
14.11.2011 21:48
Можно просто dd?
можно просто cp·
эффект тот же, а писать (аргументы) меньше·
так зачем платить больше? ©

Я бы не стал рекомендовать использовать для этого cp. Я не раз встречал, что в некоторых дистрибутивах были предустановленные алиасы, задающие дефолтные параметры для cp. И нет никакой гарантии, что у человека, читающего этот совет, не будет установлено что-то вроде '-a' или '-r'. А с этими флагами cp будет создавать идентичный специальный файл вместо копирования содержимого.

У топикстартера debian, он подобным не страдает, но тему кто-то может найти в поисковике.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Восстановление данных ext4 со структурой каталогов

Сообщение sash-kan »

/dev/random писал(а):
15.11.2011 07:22
Я не раз встречал, что в некоторых дистрибутивах были предустановленные алиасы, задающие дефолтные параметры для cp. И нет никакой гарантии, что у человека, читающего этот совет, не будет установлено что-то вроде '-a' или '-r'.
примеры дистрибутивов, в которых встречаются такие идиоты среди мэйнтэйнеров, подсовывающие root-у вообще какие-нибудь alias-ы, приведи, пожалуйста·

p.s. если пользоваться cp для данный задачи «рекомендуемым» способом — sudo cp image /dev/blabla, то никакие и ничьи alias-ы влияния не окажут·
p.p.s. а вообще много чего у «человека из поисковика» может быть экзотического в системе (равно как и сама система)·
вот только если писать пост, предусматривая все мало-мальски возможные варианты…
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5498
ОС: Gentoo

Re: Восстановление данных ext4 со структурой каталогов

Сообщение /dev/random »

sash-kan писал(а):
15.11.2011 11:13
примеры дистрибутивов, в которых встречаются такие идиоты среди мэйнтэйнеров, приведи, пожалуйста·

Именно этих флагов не видел ни разу (к счастью), А вот --interactive чуть ли не на всех командах, которые его поддерживают - несколько лет назад в мандриве. Кстати, с тех пор я каждый раз, когда сажусь за чужую машину, первым делом ввожу unalias -a.

Но это уже оффтоп.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21527
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Восстановление данных ext4 со структурой каталогов

Сообщение Bizdelnick »

sash-kan писал(а):
15.11.2011 11:13
примеры дистрибутивов, в которых встречаются такие идиоты среди мэйнтэйнеров, подсовывающие root-у вообще какие-нибудь alias-ы, приведи, пожалуйста·

$

$ cat /etc/profile /etc/profile.d/* | grep '^alias' alias mc 'source /usr/lib/mc/mc-wrapper.csh' alias mc='. /usr/lib/mc/mc-wrapper.sh' alias ls="ls $LS_OPTIONS" alias d="ls" alias l="ls" # classical listing. alias ll="ls -l" # List detailled. alias la='ls -a' # List all. alias lsd="ls -d */" # List only the directory. alias cd..="cd .." alias s="cd .." alias p="cd -" alias md="mkdir" alias rd="rmdir" alias cp="cp -i" alias mv="mv -i" alias rm="rm -i" alias grep="grep --color" # colored grep by default alias egrep="egrep --color" # colored grep by default alias fgrep="fgrep --color" # colored grep by default alias du='du -h' alias df='df -h -x supermount'


Что за дистрибутив - сам догадаешься?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
ReSeR
Сообщения: 383
ОС: GNU Debian

Re: Восстановление данных ext4 со структурой каталогов

Сообщение ReSeR »

В общем, можно ставить отметку [РЕШЕНО] :crazy:
Из всего перечня:

Код: Выделить всё

tune2fs -O ^has_journal /dev/...
extundelete
photorec
UFS Explorer
DiskGetor Data Recovery
EASEUS Data Recovery Wizard Professional 5.0.1
Stellar Phoenix Linux Data Recovery
R-Linux

ничего не подошло, т.к. восстановление делают пофайлово.
Восстановил данные на 75% при помощи R-Studio, она и структуру каталогов восстановила, имена файлов и директорий.
Бэкап - акт проявления трусости.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Восстановление данных ext4 со структурой каталогов

Сообщение sash-kan »

Bizdelnick писал(а):
15.11.2011 12:23
Что за дистрибутив - сам догадаешься?
догадался·
Bizdelnick писал(а):
15.11.2011 12:23
$ cat /etc/profile /etc/profile.d/* | grep '^alias'
само по себе это ни о чём не говорит·
а вот это:
$ sudo -i alias | wc -l
20
тянет на жирный матерный багрепорт·
и вот это — тоже:

Код: Выделить всё

$ cat /etc/profile.d/20mc.sh
# Don't define aliases in plain Bourne shell
[ -n "${BASH_VERSION}${KSH_VERSION}${ZSH_VERSION}" ] || return 0
alias mc='. /usr/lib/mc/mc-wrapper.sh'

if [ "$PS1" ]  && [ -n "$BASH" ]; then
    # work around mc history issues (#59547)
    # see also https://midnight-commander.org/ticket/2104 for other solutions
    # and workarounds
    HISTIGNORE=" cd \"\`*: PROMPT_COMMAND=?*?"
fi
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Восстановление данных ext4 со структурой каталогов

Сообщение sash-kan »

sash-kan писал(а):
15.11.2011 17:20
а вот это:
$ sudo -i alias | wc -l
20
тянет на жирный матерный багрепорт·
кстати, этот баг актуален лишь для любителей нарушать правила хорошего тона, т.е., не пользоваться sudo·
ибо:
$ sudo bash -c 'alias' | wc -l
0
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали: