Как восстановить файлы в разделе btrfs?
Как восстановить (восстановить) удаленный файл на разделе btrfs?
Я еще не сделал снимок, поэтому я не могу использовать эту функцию. Я знаю, что есть некоторые инструменты для других файловых систем Linux, но Google не нашел ничего специфического для btrfs. Я наткнулся на одно смутное упоминание о том, что в btrfs есть инструмент для восстановления, но я не могу его найти. Прежде чем попробовать инструменты для другой файловой системы, я спрашиваю здесь.
Больше информации:
- (Два) удаленных файла были удалены с помощью пульта
rsync
команда пошла не так. - Это были небольшие текстовые файлы.
- Я знаю имена файлов.
- Я мог бы вспомнить некоторые строки в файлах.
- Диск является обычным жестким диском, но он большой (2 ТБ).
- Я использую Kubuntu 12.04 (бета2) со всеми последними обновлениями.
- Я не записал никаких новых данных в раздел, из которого были удалены файлы.
- У меня нет снимка или резервной копии этих файлов. (Последняя резервная копия всего на несколько часов старше этих файлов.)
- Как ни странно, файловая система COW, кажется, имеет меньше вариантов восстановления файлов, чем ext3/4...
4 ответа
Поскольку ваши файлы имеют небольшой размер и простой текст, я бы попытался отсканировать вывод "строк" на устройство, где находится файловая система, т. Е.
strings /dev/sda1 | less
затем используйте "/" для поиска строк, которые могут быть в этом файле. Когда вы найдете текст, разделите его начало с помощью "m", затем перейдите к концу и используйте "| cat> file", чтобы сохранить его в файл.
Я действительно сделал это, когда несколько лет назад у меня была похожая ситуация на другой файловой системе без восстановления, и она отлично работала для меня.
Йорг Вальтер реализовал btrfs-undelete
сценарий оболочки с использованием find-root
а также restore
инструменты из btrfs-progs
, который можно найти здесь, и должен помочь другим в аналогичной позиции.
Поскольку он лицензирован по GPLv2, я не могу включить его сюда.
Если на вашем диске btrfs есть подобъемы, вам нужно передать дополнительный -r <subvol-id>
возможность btrfs restore
, К сожалению, сценарии, подобные тому, который опубликовал пользователь user414471 ( http://oelkers.de/tips/undeleteBtrfs.sh), не имеют возможности сделать это, но их, вероятно, можно адаптировать к этому.
Если вы хотите сделать это вручную, вам нужно получить правильный subvol-id, либо с помощью:
# mount /dev/sdXY /mnt/blah
# btrfs subvolume list /mnt/blah
# umount /mnt/blah
или в качестве альтернативы:
# btrfs restore -l /dev/sdXY | grep ROOT_ITEM
После этого вы используете btrfs-find-root
чтобы получить номер блока, к которому вы хотите вернуться (обычно тот, который находится непосредственно перед максимальным, который является текущим корнем). Для этого вам нужно сначала установить подобъем по умолчанию на тот, из которого вы хотите восстановить файлы (и впоследствии отменить это изменение):
# mount /dev/sdXY /mnt/blah
# btrfs subvolume set-default <subvol-id> /mnt/blah
# umount /mnt/blah
# btrfs-find-root /dev/sdXY
Well block 4321280 seems great, but generation doesn't match, have=400760, want=400984 level 0
...
Well block 9928704 seems great, but generation doesn't match, have=400764, want=400984 level 1
Well block 1094836224 seems great, but generation doesn't match, have=400983, want=400984 level 1
Found tree root at 1095270400 gen 400984 level 1
Вы можете, наконец, использовать btrfs restore
с -r <subvol-id>
для восстановления (изначально с --dry-run
аргумент, если хотите)
# btrfs restore -r <subvol-id> -t 9928704 -v --path-regex '^/(|dir1(|/dir2(|/dir3(|/.*))))$' /dev/sdXY /tmp/recovery
Больше информации обо всем этом здесь: https://btrfs.wiki.kernel.org/index.php/Restore
Я потерял кучу видеофайлов на своем NAS, который использует файловую систему btrfs. Поскольку я не знаком с Linux, я попытался найти что-то менее техническое с точки зрения пользователя. Я попробовал Photorec, но он восстановил только фотографии (которые, как я даже не заметил, были удалены), но не нашел мои видеофайлы .mkv.
В итоге я использовал продукт под названием ReclaiMe File Recovery (https://www.reclaime.com/download.aspx/) (сокращенно ReclaiMe). Я запустил программу на своем компьютере с Windows 10, подключив диск NAS btrfs к запасному разъему SATA. ReclaiMe нашел мой NAS-накопитель и все удаленные файлы, как видеофайлы, так и фотографии. Он аккуратно отображал файлы в их исходных подкаталогах, и я мог выбирать отдельные файлы, которые хотел восстановить. Восстановленные файлы нужно было хранить где-то кроме диска NAS, поэтому я просто использовал портативный жесткий диск USB 3.0. Затем я переустановил диск NAS обратно в свой NAS и загрузил файлы с USB-накопителя на диск NAS, используя программный интерфейс NAS.
Хотя ReclaiMe не является бесплатной программой, она проста в использовании и позволяет мне восстановить все удаленные файлы. Чтобы воссоздать свои видеофайлы с DVD, мне потребовалось бы около 60–80 часов, поэтому я думаю, что стоимость программного обеспечения для меня была оправдана. Фотографии, которые я восстановил, невозможно было скопировать, что также облегчило обоснование цены на программное обеспечение. Я бы порекомендовал программное обеспечение ReclaiMe всем, кому нужно восстановить удаленные файлы, поскольку оно мне отлично подошло. Я бы еще добавил, что вы можете скачать программное обеспечение и опробовать его перед покупкой. Вы не можете восстановить файлы с помощью бесплатного программного обеспечения, но вы можете проверить, найдет ли оно ваши файлы, прежде чем купить его. Если он не может найти файлы, которые вы ищете, возможно, уже слишком поздно.