Поиск по сайту:

Как восстановить удаленные файлы в Linux с помощью testdisk


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

РМ: Сокращение от раскаяния?

Слишком просто использовать команду rm и смотреть на окно терминала с растущим чувством сожаления. Одна маленькая ошибка с подстановочными знаками, и вы можете стереть гораздо больше, чем планировали.

Файловая система Linux по умолчанию, ext4, использует индексные дескрипторы для хранения данных о каждом файле и таблицу индексных дескрипторов для отслеживания индексных дескрипторов. Индексный дескриптор содержит метаданные о файле, такие как его имя, владелец, права доступа и т. д.

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

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

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

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

Это нетривиальные действия. Обычно, когда вы удаляете файл по ошибке, это происходит в самый неподходящий момент. Это всегда, когда вам нужен этот файл, и он нужен вам сейчас. У вас нет времени копаться в редакторах секторов и других утилитах. Кроме того, если это файл, который вы только что создали, скорее всего, он еще не был скопирован, так что это вам тоже не поможет.

Здесь на помощь приходит testdisk. Он прост в использовании и не требует подробных знаний о файловой системе на низком уровне. Давайте посмотрим, как его использовать!

Установка тестового диска

Чтобы установить testdisk в Ubuntu, используйте эту команду:

sudo apt-get install testdisk

В Fedora вам нужно ввести:

sudo dnf install testdisk

В Manjaro вы должны использовать pacman:

sudo pacman -Sy testdisk

Использование тестового диска

Несмотря на то, что testdisk запускается в окне терминала, у него есть простейший интерфейс. Вы используете клавиши со стрелками для навигации и Enter, чтобы сделать выбор. Чтобы все было аккуратно, лучше всего создать каталог для восстановленных файлов.

Мы вводим следующее, чтобы создать каталог с именем «восстановлено» для наших восстановленных файлов:

mkdir restored

Мы вводим следующее, чтобы переключиться на новый каталог и запустить оттуда testdisk:

cd restored/

Мы должны использовать sudo с testdisk, поэтому мы вводим следующее:

sudo testdisk

Первый вопрос, который задает testdisk, касается ведения журнала. Он может создать новый файл журнала, использовать существующий или вообще ничего не регистрировать. Неважно, какой вариант вы выберете; это не повлияет на работу testdisk.

Вы можете просто нажать Enter, чтобы принять выделенную опцию и создать новый файл журнала. Он будет создан в каталоге, из которого вы запустили testdisk. Когда вы делаете свой выбор, testdisk спрашивает, на каком жестком диске находится файловая система, с которой вы хотите работать.

В нем перечислены жесткие диски, которые он может найти, а также файлы squashfs «/dev/loop». Один из них будет для каждого приложения, которое вы установили из привязки. Они доступны только для чтения, поэтому вам не удалось ничего удалить из этих файловых систем.

На этом тестовом компьютере есть только один физический жесткий диск, поэтому мы использовали стрелку вниз, чтобы выделить параметр «/dev/sda». Затем мы использовали стрелку вправо, чтобы выбрать «Продолжить», а затем нажали Enter.

testdisk также должен знать тип раздела. Он представляет меню параметров, а также тип раздела, который он автоматически определяет внизу.

Если у вас нет веской причины не делать этого, выделите тип раздела, который определяется автоматически, а затем нажмите Enter.

В появившемся меню функций выделите «Дополнительно» и нажмите «Ввод».

Появится меню выбора раздела.

Файлы, которые мы ищем, находятся в разделе файловой системы Linux. У нас на жестком диске только один раздел Linux, но у вас может быть больше.

Выберите раздел, в котором находились ваши файлы, используйте клавиши со стрелками влево и вправо, чтобы выбрать «Список», а затем нажмите Enter. Появится меню выбора файла.

Используйте стрелки вверх и вниз или клавиши PgUp и PgDn для навигации по списку файлов и каталогов. Нажмите стрелку вправо или Enter, чтобы войти в каталог, и стрелку влево или Esc, чтобы выйти из каталога.

Мы ищем файлы, которые принадлежали dave. Файлы для всех учетных записей пользователей находятся в «Домашнем» каталоге. Итак, мы выделяем каталог «Домашний», а затем можем нажать либо стрелку вправо, либо Enter, чтобы войти в этот каталог.

Все учетные записи пользователей будут перечислены для нас. Мы выделяем dave, а затем нажимаем стрелку вправо или Enter, чтобы войти в этот каталог.

Теперь мы можем видеть файлы, принадлежащие учетной записи dave. Записи, выделенные красным, были удалены. Мы перемещаемся по файлам и каталогам, пока не найдем файлы, которые хотим восстановить.

Чтобы восстановить файл, просто выделите его, а затем нажмите c (нижний регистр).

Дисплей изменится и предложит вам выбрать место назначения для восстановленного файла. Поскольку мы создали каталог с именем «Restored» и запустили из него testdisk, первая запись в списке (.) — это этот каталог. Чтобы восстановить этот удаленный файл в этот каталог, мы нажимаем C (верхний регистр).

После этого вы вернетесь к экрану выбора файлов. Если вы хотите восстановить больше файлов, просто повторите процесс. Выделите удаленный файл, нажмите c (нижний регистр), чтобы скопировать его, а затем нажмите C (верхний регистр), чтобы восстановить его.

Работа с восстановленными файлами

После восстановления файла дерево каталогов восстанавливается в исходное положение, что полезно, поскольку напоминает, где на жестком диске находился исходный файл. Это означает, что если вам нужно скопировать его обратно, вы знаете, куда его поместить.

Если вы восстанавливаете несколько файлов из разных мест файловой системы, которые имеют одинаковое имя файла, их все равно придется хранить отдельно.

Вы можете ввести следующее, чтобы увидеть содержимое каталога «Восстановлено»:

ls

Если вы попросили testdisk создать файл журнала, он будет находиться в каталоге «Восстановлено». Поскольку наши восстановленные файлы находились в «/home/dave», они были скопированы в наш каталог «Восстановлено», вложенный в каталоги с тем же именем.

Мы можем перейти в скопированный каталог «dave», используя cd. Убедитесь, что вы не включаете в путь косую черту (/) — вы хотите перейти на локальный «дом», а не на системный «/home».

Набираем следующее:

cd home/dave

Восстановленные файлы находятся в этом каталоге, поэтому мы набираем:

ls

Давайте еще раз взглянем на восстановленные файлы с помощью параметра -l (длинный список):

лс -л

Поскольку мы использовали sudo для запуска testdisk, восстановленные файлы были восстановлены с root в качестве владельца. Мы можем изменить владельца обратно на «dave», используя chown:

sudo chown dave.dave *

Мы вводим следующее, чтобы убедиться, что правильное право собственности было восстановлено:

ls -l

testdisk: код для облегчения

Это чувство облегчения после восстановления важного файла, который всего минуту назад казался безвозвратно потерянным, — это то, что вы всегда будете ценить.

Вот почему testdisk – такая удобная утилита. После того, как вы разберетесь с меню и сможете начать восстанавливать файлы, легко попасть в ритм выделения, до, до, повтора.

RELATED: Best Linux Laptops for Developers and Enthusiasts