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

Иллюстрация окна терминала на компьютере Linux.

Фатмавати Ахмад Дзэнури / Shutterstock



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

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

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





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

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



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

Реклама

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

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



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

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

СВЯЗАННЫЙ: Все, что вы когда-либо хотели знать об индексных дескрипторах в Linux

Установка testdisk

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

pacman

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

testdisk

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

sudo

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

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

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

testdisk

Реклама

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

testdisk

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

snap

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

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

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

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

Реклама

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

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

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

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

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

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

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

Реклама

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

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

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

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

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

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

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

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

Реклама

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

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

chown

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

Мы можем перейти в скопированный каталог dave, используя

sudo apt-get install testdisk
. Убедитесь, что вы не добавили в путь косую черту (
sudo dnf install testdisk
) - вы хотите перейти в локальный дом, а не в system / home.

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

sudo pacman -Sy testdisk

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

mkdir restored

Реклама

Давайте еще раз посмотрим на восстановленные файлы, используя

cd restored/
(длинный список) вариант:

ls -l

Поскольку мы использовали

sudo testdisk
для запуска
ls
, восстановленные файлы были восстановлены с правами root в качестве владельца. Мы можем снова изменить владельца на Дэйва, используя
cd home/dave
:

ls

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

sudo chown dave.dave *

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

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

Вот почему

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

Команды Linux
Файлы деготь · pv · Кот · такс · chmod · рукоятка · разница · sed · С участием · человек · толкать · popd · fsck · тестовый диск · seq · fd · пандок · компакт диск · $ ПУТЬ · awk · присоединиться · jq · складывать · уникальный · journalctl · хвостик · государство · ls · fstab · выбросил · меньше · chgrp · Chown · rev · Посмотрите · струны · тип · переименовать · застегивать · распаковать · устанавливать · размонтировать · установить · fdisk · mkfs · rm · rmdir · rsync · df · gpg · мы · нано · mkdir · от · пер · пластырь · конвертировать · rclone · крошить · SRM
Процессы псевдоним · экран · верхняя · Ницца · Ренис · прогресс · Strace · система · tmux · чш · история · в · партия · бесплатно · который · dmesg · usermod · пс · chroot · xargs · tty · мизинец · lsof · vmstat · тайм-аут · стена · да · убийство · спать · судо · его · время · groupadd · usermod · группы · lshw · неисправность · перезагружать · останавливаться · выключение · пароль · lscpu · crontab · Дата · bg · фг
Сети netstat · пинг · трассировка · ip · SS · кто · fail2ban · бмон · ты · Палец · nmap · ftp · завиток · wget · ВОЗ · кто я · В · iptables · ssh-keygen · ufw

СВЯЗАННЫЙ: Лучшие ноутбуки с Linux для разработчиков и энтузиастов

ПРОЧИТАЙТЕ СЛЕДУЮЩИЙ Фотография профиля Дэйва Маккея Дэйв Маккей
Дэйв Маккей впервые использовал компьютеры, когда в моде была перфолента, и с тех пор он занимается программированием. Проработав более 30 лет в ИТ-индустрии, он теперь работает журналистом в области информационных технологий. За свою карьеру он работал программистом-фрилансером, менеджером международной группы разработчиков программного обеспечения, менеджером проекта ИТ-услуг, а в последнее время - специалистом по защите данных. Его статьи были опубликованы на сайтах howtogeek.com, cloudsavvyit.com, itenterpriser.com и opensource.com. Дэйв - евангелист Linux и сторонник открытого исходного кода.
Прочитать полную биографию

Интересные статьи