Как восстановить удаленные файлы в Linux с помощью testdisk
Опубликовано: 2022-01-29Вы когда-нибудь удаляли файл и тут же сожалели об этом? Вам нужно вернуть его, и быстро! Но что, если файл настолько новый, что его резервная копия еще не создана? К счастью, с этим можно что-то сделать.
РМ: Сокращение от раскаяния?
Слишком просто использовать команду rm
и смотреть на окно терминала с растущим чувством сожаления. Одна маленькая ошибка с подстановочными знаками, и вы можете стереть гораздо больше, чем планировали.
Файловая система Linux по умолчанию, ext4
, использует индексные дескрипторы для хранения данных о каждом файле и таблицу индексных дескрипторов для отслеживания индексных дескрипторов. Индексный дескриптор содержит метаданные о файле, такие как его имя, владелец, права доступа и т. д.
Он также содержит точки входа для жестких ссылок, указывающих на файл. Каждый файл имеет по крайней мере одну жесткую ссылку. Каждый раз, когда вы создаете новую жесткую ссылку, количество жестких ссылок увеличивается на единицу. Каждый раз, когда вы удаляете жесткую ссылку, количество жестких ссылок в индексном узле уменьшается на единицу.
Когда вы удаляете файл, который индексный дескриптор пометил как неиспользуемый (и готовый к повторному использованию), удаляется последняя жесткая ссылка. В этом случае файл не будет отображаться в списках каталогов, и его нельзя будет использовать или получить к нему доступ.
Однако данные, составляющие содержимое файла, по-прежнему присутствуют на жестком диске. Однако если бы вы могли исправить индексный дескриптор, чтобы он содержал правильную информацию, файл был бы восстановлен. Конечно, это будет работать только в том случае, если данные, из которых состоит файл на жестком диске, останутся неповрежденными и не будут перезаписаны.
В качестве альтернативы вы можете создать новый индексный дескриптор, скопировать оставшиеся данные из старого индексного дескриптора, а затем заменить отсутствующие биты.
Это нетривиальные действия. Обычно, когда вы удаляете файл по ошибке, это происходит в самый неподходящий момент. Это всегда, когда вам нужен этот файл, и он нужен вам сейчас. У вас нет времени копаться в редакторах секторов и других утилитах. Кроме того, если это файл, который вы только что создали, скорее всего, он еще не был скопирован, так что это вам тоже не поможет.
Здесь на помощь приходит testdisk
. Он прост в использовании и не требует подробных знаний о файловой системе на низком уровне. Давайте посмотрим, как его использовать!
СВЯЗАННЫЕ С: Все, что вы когда-либо хотели знать об инодах в Linux
Установка тестового диска
Чтобы установить testdisk
в Ubuntu, используйте эту команду:
sudo apt-get установить тестовый диск
В Fedora вам нужно ввести:
sudo dnf установить тестовый диск
В Manjaro вы должны использовать pacman
:
sudo pacman -Sy testdisk
Использование тестового диска
Несмотря на то, что он работает в окне терминала, testdisk
имеет примитивный интерфейс. Вы используете клавиши со стрелками для навигации и Enter, чтобы сделать выбор. Чтобы все было аккуратно, лучше всего создать каталог для восстановленных файлов.
Мы вводим следующее, чтобы создать каталог с именем «восстановлено» для наших восстановленных файлов:
mkdir восстановлен
Мы вводим следующее, чтобы переключиться в новый каталог и запустить testdisk
:
компакт-диск восстановлен/
Мы должны использовать sudo
с testdisk
, поэтому мы набираем следующее:
судо тестдиск
Первый вопрос, который задает testdisk
, касается логирования. Он может создать новый файл журнала, использовать существующий или вообще ничего не регистрировать. Неважно, какой вариант вы выберете; это не повлияет на testdisk
.
Вы можете просто нажать Enter, чтобы принять выделенную опцию и создать новый файл журнала. Он будет создан в каталоге, из которого вы запустили testdisk
. Когда вы делаете свой выбор, testdisk
спрашивает, на каком жестком диске находится файловая система, с которой вы хотите работать.
В нем перечислены жесткие диски, которые он может найти, а также файлы squashfs
«/dev/loop». Там будет один из них для каждого приложения, которое вы установили из snap
. Они доступны только для чтения, поэтому вам не удалось ничего удалить из этих файловых систем.
На этом тестовом компьютере есть только один физический жесткий диск, поэтому мы использовали стрелку вниз, чтобы выделить параметр «/dev/sda». Затем мы использовали стрелку вправо, чтобы выбрать «Продолжить», а затем нажали Enter.
testdisk
также должен знать тип раздела. Он представляет меню параметров, а также тип раздела, который он автоматически определяет внизу.
Если у вас нет веской причины не делать этого, выделите тип раздела, который определяется автоматически, а затем нажмите Enter.
В появившемся меню функций выделите «Дополнительно» и нажмите «Ввод».
Появится меню выбора раздела.
Файлы, которые мы ищем, находятся в разделе файловой системы Linux. У нас есть только один раздел Linux на нашем жестком диске, но у вас может быть больше.
Выберите раздел, в котором находились ваши файлы, используйте клавиши со стрелками влево и вправо, чтобы выбрать «Список», а затем нажмите Enter. Появится меню выбора файла.
Используйте стрелки вверх и вниз или клавиши PgUp и PgDn для перемещения по списку файлов и каталогов. Нажмите стрелку вправо или Enter, чтобы войти в каталог, и стрелку влево или Esc, чтобы выйти из каталога.
Мы ищем файлы, которые принадлежали dave
. Файлы для всех учетных записей пользователей находятся в «Домашнем» каталоге. Итак, мы выделяем каталог «Домашний», а затем можем нажать либо стрелку вправо, либо Enter, чтобы войти в этот каталог.
Все учетные записи пользователей будут перечислены для нас. Мы выделяем dave
, а затем нажимаем стрелку вправо или Enter, чтобы войти в этот каталог.
Теперь мы можем видеть файлы, принадлежащие учетной записи dave
. Записи, выделенные красным, были удалены. Мы перемещаемся по файлам и каталогам, пока не найдем файлы, которые хотим восстановить.
Чтобы восстановить файл, просто выделите его, а затем нажмите c (нижний регистр).
Дисплей изменится и предложит вам выбрать место назначения для восстановленного файла. Поскольку мы создали каталог с именем «Restored» и запустили из него testdisk
, первая запись в списке (.) — это этот каталог. Чтобы восстановить этот удаленный файл в этот каталог, мы нажимаем C (верхний регистр).
После этого вы вернетесь к экрану выбора файлов. Если вы хотите восстановить больше файлов, просто повторите процесс. Выделите удаленный файл, нажмите c (нижний регистр), чтобы скопировать его, а затем нажмите C (верхний регистр), чтобы восстановить его.
Работа с восстановленными файлами
После восстановления файла дерево каталогов восстанавливается в исходное положение, что полезно, поскольку напоминает, где на жестком диске находился исходный файл. Это означает, что если вам нужно скопировать его обратно, вы знаете, куда его поместить.
Если вы восстанавливаете несколько файлов из разных мест файловой системы, имеющих одинаковое имя файла, их все равно придется хранить отдельно.
Вы можете ввести следующее, чтобы увидеть содержимое каталога «Восстановлено»:
лс
Если вы попросили testdisk
создать файл журнала, он будет находиться в каталоге «Восстановлено». Так как наши восстановленные файлы находились в «/home/dave», они были скопированы в наш каталог «Restored», вложенный в каталоги с тем же именем.
Мы можем перейти в скопированный каталог «dave», используя cd
. Убедитесь, что вы не включаете в путь косую черту ( /
) — вы хотите перейти на локальный «дом», а не на системный «/home».
Набираем следующее:
компакт-диск домой/дэйв
Восстановленные файлы находятся в этом каталоге, поэтому мы набираем:
лс
Давайте еще раз посмотрим на восстановленные файлы, используя опцию -l
(длинный список):
лс -л
Поскольку мы использовали sudo
для запуска testdisk
, восстановленные файлы были восстановлены с «root» в качестве владельца. Мы можем изменить владельца обратно на «dave», используя chown
:
Судо Чаун Дэйв. Дэйв *
Мы вводим следующее, чтобы убедиться, что правильное право собственности было восстановлено:
лс -л
testdisk: код для облегчения
Это чувство облегчения после восстановления важного файла, который всего минуту назад казался безвозвратно потерянным, — это то, что вы всегда будете ценить.
Вот почему testdisk
такая удобная утилита. После того, как вы разберетесь с меню и сможете начать восстанавливать файлы, легко попасть в ритм выделения, до, до, повтора.
Команды Linux | ||
Файлы | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm | |
Процессы | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · тайм-аут · стена · да · убить · спать · sudo · su · время · groupadd · usermod · группы · lshw · выключение · перезагрузка · halt · poweroff · passwd · lscpu · crontab · дата · bg · fg | |
Сеть | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
СВЯЗАННЫЕ С: Лучшие ноутбуки с Linux для разработчиков и энтузиастов