LINUX.ORG.RU

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

 ,


0

1

Всем привет, по глупости/случайности удалил с субволума все файлы, помогите вернуть, на данный момент пробовал это и это, но у меня выдает ошибку, что размер суперблока больше чем устройство на которое пытаюсь восстановить,

sudo btrfs restore -t 38010880 /dev/sdb1 /mnt/seagate/restore/
parent transid verify failed on 38010880 wanted 934706 found 934684
parent transid verify failed on 38010880 wanted 934706 found 934684
Ignoring transid failure
WARNING: could not setup extent tree, skipping it
Couldn't setup device tree
Could not open root, trying backup super
parent transid verify failed on 38010880 wanted 934706 found 934684
parent transid verify failed on 38010880 wanted 934706 found 934684
Ignoring transid failure
WARNING: could not setup extent tree, skipping it
Couldn't setup device tree
Could not open root, trying backup super
ERROR: superblock bytenr 274877906944 is larger than device size 98558803968
Could not open root, trying backup super

Но это не так, обьем удаленных файлов около 15 гиг, а на диске на который пытаюсь восстановить свободно около 100 гиг

@intelfx приглашается в качестве эксперта

Ответ на: комментарий от agafron

Суперблок в любом случае никак не связан с удалёнными файлами. Ошибка в том, что суперблок указывает на сектор за пределами устройства (то есть проще говоря, суперблок битый).

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

вот что выдал btrfs-find-root, но даше дело не продвинулось

sudo btrfs-find-root /dev/sdb1
Superblock thinks the generation is 934706
Superblock thinks the level is 1
Found tree root at 181190656 gen 934706 level 1
Well block 171261952(gen: 934702 level: 1) seems good, but generation/level doesn't match, want gen: 934706 level: 1
Well block 132235264(gen: 934701 level: 1) seems good, but generation/level doesn't match, want gen: 934706 level: 1
Well block 114982912(gen: 934698 level: 1) seems good, but generation/level doesn't match, want gen: 934706 level: 1
Well block 106233856(gen: 934696 level: 1) seems good, but generation/level doesn't match, want gen: 934706 level: 1
Well block 97910784(gen: 934695 level: 1) seems good, but generation/level doesn't match, want gen: 934706 level: 1
Well block 98320384(gen: 934694 level: 1) seems good, but generation/level doesn't match, want gen: 934706 level: 1
Well block 95027200(gen: 934693 level: 0) seems good, but generation/level doesn't match, want gen: 934706 level: 1
Well block 93519872(gen: 934692 level: 0) seems good, but generation/level doesn't match, want gen: 934706 level: 1
Well block 84295680(gen: 934690 level: 0) seems good, but generation/level doesn't match, want gen: 934706 level: 1
Well block 80396288(gen: 934689 level: 0) seems good, but generation/level doesn't match, want gen: 934706 level: 1
Well block 76447744(gen: 934688 level: 1) seems good, but generation/level doesn't match, want gen: 934706 level: 1
Well block 71450624(gen: 934687 level: 1) seems good, but generation/level doesn't match, want gen: 934706 level: 1
Well block 55246848(gen: 934686 level: 0) seems good, but generation/level doesn't match, want gen: 934706 level: 1
Well block 53362688(gen: 934686 level: 0) seems good, but generation/level doesn't match, want gen: 934706 level: 1
Well block 45006848(gen: 934685 level: 1) seems good, but generation/level doesn't match, want gen: 934706 level: 1
Well block 38010880(gen: 934684 level: 0) seems good, but generation/level doesn't match, want gen: 934706 level: 1
Well block 37978112(gen: 934684 level: 0) seems good, but generation/level doesn't match, want gen: 934706 level: 1
Well block 22396928(gen: 934674 level: 1) seems good, but generation/level doesn't match, want gen: 934706 level: 1
Well block 22331392(gen: 934673 level: 0) seems good, but generation/level doesn't match, want gen: 934706 level: 1
Well block 21823488(gen: 934647 level: 0) seems good, but generation/level doesn't match, want gen: 934706 level: 1
Well block 4489216(gen: 934646 level: 0) seems good, but generation/level doesn't match, want gen: 934706 level: 1
Well block 24084480(gen: 934508 level: 0) seems good, but generation/level doesn't match, want gen: 934706 level: 1
Well block 23904256(gen: 934508 level: 0) seems good, but generation/level doesn't match, want gen: 934706 level: 1
agafron ()
Ответ на: комментарий от agafron

Я вообще не знаю, зачем btrfs restore пытается прочесть суперблок, когда ты передал ему дерево. Но в любом случае, из этого дерева — точно нет, оно убитое. Можешь попробовать поискать другие корни.

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

Можешь попробовать поискать другие корни.

запустил еще раз btrfs-find-root, стало меньше блоков, и если пытаюсь восстанавливать, то начинает восстанавливаться не тот субволум(тот на котором ничего не удалялось), или btrfs restore восстанавливает все подряд, и надо запустить и ждать?

sudo btrfs-find-root /dev/sdb1
Superblock thinks the generation is 934717
Superblock thinks the level is 1
Found tree root at 29065216 gen 934717 level 1
Well block 26116096(gen: 934716 level: 1) seems good, but generation/level doesn't match, want gen: 934717 level: 1
Well block 21118976(gen: 934715 level: 1) seems good, but generation/level doesn't match, want gen: 934717 level: 1
Well block 4767744(gen: 934714 level: 1) seems good, but generation/level doesn't match, want gen: 934717 level: 1
Well block 4407296(gen: 934713 level: 1) seems good, but generation/level doesn't match, want gen: 934717 level: 1
Well block 4308992(gen: 934712 level: 0) seems good, but generation/level doesn't match, want gen: 934717 level: 1
Well block 6160384(gen: 934710 level: 0) seems good, but generation/level doesn't match, want gen: 934717 level: 1
agafron ()
Ответ на: комментарий от agafron

запустил еще раз btrfs-find-root, стало меньше блоков, и если пытаюсь восстанавливать, то начинает восстанавливаться не тот субволум(тот на котором ничего не удалялось), или btrfs restore восстанавливает все подряд, и надо запустить и ждать?

К стати, а почему в линуксе все утилиты восстановления которые я встречал чисто автоматические и не имеют интерактивного режима?

Да и о каких либо редакторах способных напрямую работать с блочными устройствами или сериальными переменными в /proc и /sys я за много лет ничего не слышал.

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

@intelfx, есть еще способы вытащить файлы? то гугл больше ничего дельного не дает, все блоки испробовал, ни один не восстановил нужное, либо выдает ошибку про суперблок, может я что-то не так делаю? вот тут, например, еще говорится про ручной способ, с прсваиванием subvol-id, но у меня выдает ошибку, sudo btrfs subvolume set-default 934715 /mnt/blah ERROR: Could not set default subvolume: No such file or directory

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

К стати, а почему в линуксе все утилиты восстановления которые я встречал чисто автоматические и не имеют интерактивного режима?

Да и о каких либо редакторах способных напрямую работать с блочными устройствами или сериальными переменными в /proc и /sys я за много лет ничего не слышал.

Linux гонится за Windows. Первый шаг уже сделан — юзер по умолчанию считается тупым планктоном, ни на что не способным, только разработчики ядра — илитная илита, и у них всё просто работает и никогда-никогда не разваливается!

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

Нет, только btrfs restore с ручным указанием корневого блока дерева. Если ты точно перепробовал все поколения (точно ли? objectid свой нашёл?) и ни одно не даёт искомых результатов — то очень жаль.

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

Если ты точно перепробовал все поколения (точно ли? objectid свой нашёл?)

как это проверить?

после этой команды btrfs restore -l /dev/sdb1 | grep ROOT_ITEM все блоки пропали

еще загрузился в винду, скачал UFS Explorer Professional Recovery, он видит удаленные файлы, но триальная вепсия может восстановить только файлы размером до 768кб

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

Вообще в случае чего поиск суперблоков предполагается вручную


как это сделать?

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

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

Тогда непонятно, зачем ты использовал btrfs

можешь с меня смеяться сколько угодно, но дело в том, что я запорол хомяк, аж самому смешно, но уже не до смеха, и хомяк я не снапшотил никогда, так как не мог предположить, что я когда-то умудрюсь его запороть

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

но какая от них польза, если ты не дал ни одного практического совета?

мне надо вернуть дерево хомяка, какой смысл побайтово восстанавливать каждый файл? я их вовек не расставлю по нужным местам

По крайней мере в ext4 несколько экемпляров суперблока и по этому программе восстановления можно указать исправный, чем спасти ситуацию.
Правда как с этим в btrfs не знаю, но даже если суперблок там один, то может ты сможешь его отремонтировать?

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

но даже если суперблок там один, то может ты сможешь его отремонтировать?

да, он целый и он восстанавливает совсем не тот субволум, который мне нужет, я уже перепробовал все блоки, но благодаря комманде btrfs restore -l /dev/sdb1 | grep ROOT_ITEM уже и существующие ранее блоки пропали, в общем, скорее всего придется смириться и возвращать все настройки по памяти, но все же по прежнему жду советов

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

он восстанавливает совсем не тот субволум, который мне нужет

Тогда может ты выберешь правильный корень (с правильным objectid), м?

благодаря комманде btrfs restore -l /dev/sdb1 | grep ROOT_ITEM уже и существующие ранее блоки пропали

btrfs restore ни при каких условиях не записывает ничего на диск. Либо у тебя кривые руки, либо одно из двух.

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

Тогда может ты выберешь правильный корень (с правильным objectid), м?

как это правильно сделать?
дай пожалуйста более подробную инструкцию, я немного не разбираюсь в терминогологии, что из приведенного objectid?

btrfs restore ни при каких условиях не записывает ничего на диск.

не спорю, но после выше приведенной команды количество строк Well block ... seems good... сократилось, а после повторной команды осталась всего одна такая строка

agafron ()
Последнее исправление: agafron (всего исправлений: 3)
Ответ на: комментарий от intelfx

я все выполнял загрузившись с лавюсби, фс монтировал пару раз, чтобы узнать номер субволюма, ьем более на примонтированной ФС btrfs restore дает предупреждение, что надо отмонтировать

agafron ()
Последнее исправление: agafron (всего исправлений: 1)

фс монтировал Можешь забыть про свои файлы.

Вот это ынтырпрайз! Вот это я понимаю! И кто-то ж все еще клюёт на это говно))

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

В данном случае TS сам себе ногу отстрелил.

Не знаю сам или нет, но у меня тоже знания о файловых системах, особенно btrfs весьма скромные, и если будет возможность что-нибудь себе отстрелить, я наверняка тоже отстрелю. Вот это и пугает.

Im_not_a_robot ★★★★★ ()