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

5 февраля 2021 |

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

An illustration of a terminal window on a Linux computer. Фатмавати Ахмад Зэнури / Shutterstock

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

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

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

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

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

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

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

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

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

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

Установка testdisk

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

sudo apt-get install testdisk

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

sudo dnf install testdisk

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

sudo pacman -Sy testdisk

Использование testdisk

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

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

mkdir restore

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

cd восстановлен /

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

sudo testdisk

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ls

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

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

Мы вводим следующее:

cd home / dave

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

ls

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

ls -l

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

sudo chown dave.dave *

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

ls -l

testdisk : Code for Relief

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

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

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

Tags:

Напишите пару строк: