- Восстановление открытых файлов но удаленных c файловой системы linux
- Предыстория
- Восстанавливаем файл
- Простой способ восстановить удаленные файлы
- Как в Linux восстановить удаленные файлы [гид для новичков]
- Как восстанавливать удаленные файлы с помощью TestDisk в Linux
- Шаг 1
- Шаг 2
- Шаг 3
- Шаг 4
- Шаг 5
- Шаг 6
- Шаг 7
- Шаг 8
- Шаг 9
- Шаг 10
- Пара советов по восстановлению файлов с помощью TestDisk
Восстановление открытых файлов но удаленных c файловой системы linux
Всех с прошедшим новым годом!
В этой заметке я бы хотел поделиться как можно восстановить открытый файл в linux.
Предыстория
Зашел человек на канал посвященный debian в jabber и сказал что взломали его jabber-bot и выполнили команду:
так как это было выполнено не под рутом, особых проблем быть не должно, но конфигурационные файлы бота удалены. Бот остался запущен и задача была восстановить открытые им файлы и попробовать максимально быстро поднять всё с теми же настройками.
Восстанавливаем файл
Первым делом нам нужно убедиться что у нас стоит приложение lsof и примонтирован procfs в /proc.
В этой заметке я буду считать что в системе где будут восстанавливаться открытые файлы все нужные приложения стоят, root доступ есть, всё примонтировано как нужно.
Первым делом нам нужно найти открытый файл с помощью программы lsof:
Нас интересуют вот эти значения:
- Номер процесса (pid)
- Файловый дескриптор (file descriptor)
Здесь я выделю жирным то что нужно:
kwin 2031 4002 anton 2w REG 253,3 4486557 1835028 /home/anton/.xsession-errors
Дальше восстанавливаем его (вы можете также его сохранить в другом месте):
На этом всё, так можно восстановить открытый файл, но который по какой-то причине был удален.
UPD1: Меня спросили как найти и восстановить все открытые файлы конкретным приложением.
Предположим мы знаем 1 файл который нужно восстановить, мы его нашли с помощью
Мы знаем что 2031 — это pid процесса который держит ваш файл. Нам нужно найти все файлы которые держать открытыми данный процесс:
Мы видим все открытые приложения этим процессом, нам осталось только отобрать удаленные:
После чего просто восстанавливаем все файлы как описано выше.
UPD2: Почему я использую grep для поиска файлов вместо параметра, который работает быстрей?
Я использую grep так как там видно удален файл или нет, я считаю это более удобным (ИМХО)
UPD3: Также можно посмотреть все открытые файлы процесса через комманду ls, пометки deleted будут, пример:
Источник
Простой способ восстановить удаленные файлы
Поделюсь небольшой находкой, маленькой программой для восстанавления удаленные файлы. Какое-то время назад было очень нужно, но программы Scalpel, тогда не нашел, к сожалению. На мой взгляд, из всех известных мне способов — это один из наиболее простых. Scalpel появился из проекта Foremost.
И так любителям rm -rf посвящается:
Во первых, самое главное, никто не гарантирует, что Scalpel сможет восстановить ваши файлы, но шансы на это есть.
Установка (так как на испытуемой машине стоит Ubuntu, то рассказывать буду про нее):
Далее можно покурить маны (полезно):
…
doc y 10000000 \xd0\xcf\x11\xe0\xa1\xb1\x1a\xe1\x00\x00 \xd0\xcf\x11\xe0\xa1\xb1\x1a\xe1\x00\x00 NEXT
doc y 10000000 \xd0\xcf\x11\xe0\xa1\xb1
…
pdf y 5000000%PDF %EOF\x0d REVERSE
pdf y 5000000%PDF %EOF\x0a REVERSE
…
Теперь можно запускать восстановление:
$ mount
/dev/sda1 on / type ext3 (rw, relatime, errors=remount-ro)
proc on /proc type proc (rw, noexec, nosuid, nodev)
/sys on /sys type sysfs (rw, noexec, nosuid, nodev)
varrun on /var/run type tmpfs (rw, noexec, nosuid, nodev, mode=0755)
udev on /dev type tmpfs (rw, mode=0755)
devshm on /dev/shm type tmpfs (rw)
devpts on /dev/pts type devpts (rw, gid=5, mode=620)
lrm on /lib/modules/2.6.24–21-generic/volatile type tmpfs (rw)
/dev/sda2 on /home type ext3 (rw, relatime)
После отработки переходим в директорию output и смотрим что там есть:
/output$ ls -l
-rw-r—r— 1 root root 28189 2009–03–24 14:42 audit.txt
drwxr-xr-x 2 root root 4096 2009–03–24 14:42 doc-3–0
drwxr-xr-x 2 root root 4096 2009–03–24 14:42 doc-3–1
drwxr-xr-x 2 root root 4096 2009–03–24 14:42 doc-3–2
drwxr-xr-x 2 root root 4096 2009–03–24 14:42 doc-4–0
…
drwxr-xr-x 2 root root 4096 2009–03–24 14:42 pdf-5–0
drwxr-xr-x 2 root root 4096 2009–03–24 14:42 pdf-6–0
…
В файле audit.txt хранится инофмация о проведеном восстановлении:
/output$ cat audit.txt
Scalpel version 1.60 audit file
Started at Tue Mar 24 14:16:04 2009
Command line:
scalpel /dev/sda1 -o output
Output directory: /home/username/output
Configuration file: /etc/scalpel/scalpel.conf
Opening target «/dev/sda1»
The following files were carved:
File Start Chop Length Extracted From
00053045.doc 183664640 YES 10000000 sda1
00053046.doc 183971840 YES 10000000 sda1
…
00050372.doc 203272192 NO 208896 sda1
00050373.doc 203481088 NO 229376 sda1
…
Completed at Tue Mar 24 14:42:41 2009
Смотрим во вложенные каталоги и видим (если повезет) наши файлы:
/output/doc-3–0$ ls -l
total 25564
-rw-r—r— 1 root root 307200 2009–03–24 14:42 00050348.doc
-rw-r—r— 1 root root 40960 2009–03–24 14:42 00050349.doc
-rw-r—r— 1 root root 4354 2009–03–24 14:42 00050350.doc
-rw-r—r— 1 root root 466686 2009–03–24 14:42 00050351.doc
-rw-r—r— 1 root root 176128 2009–03–24 14:42 00050352.doc
…
Источник — HowtoForge (вольный перевод).
Добавлю от себя Scalpel восстановил далеко не все, конечно. Но очень много, про некоторые файлы я даже забыл уже. Работает он весьма не спешно, кушает почти весь процессор во время работы.
Scalpel умеет работать с фаловыми системами FAT, NTFS, ext 2/3, то есть восстанавливать данные можно и с win-разделов.
И напоследок, лучших способ восстановить очень важные файлы это:
1. Делать бекапы.
2. Очень хорошо думать перед удалением.
Источник
Как в Linux восстановить удаленные файлы [гид для новичков]
Статья расскажет о том, как в Linux с помощью инструмента командной строки Test Tool восстановить удаленные файлы. Это легкий в использовании инструмент, который практически любой сможет использовать в целях восстановления утерянных файлов в Ubuntu или иных дистрибутивах Linux.
Вы когда-нибудь были в ужасе? В ужасе от понимания того, что файлы стерты и даже из корзины. Зачастую за ужасом приходит следующая фаза — отрицание. Ее запускает мысль: “Я знаю, что где-то лежит копия”.
Но вместо того, чтобы проходить все эти фазы, лучше не беспокоиться. Главное помните, вы не одни. Рано или поздно все через это проходят.
“Не беспокоится? — возразите вы, — Я только что стер единственную копию резюме!”
Нет, правда, не беспокойтесь. На самом деле все, что вы удалили просто было вынесено из списка. Пока вы больше ничего на него не запишете все останется на месте. На самом деле, даже если после удаления записать что-то на диск, то есть шанс, что удаленная информация все равно на нем останется (это зависит от размера удаленной информации и оставшегося свободного места, но все же).
“Да, хорошо, — скажете вы, — мне легче от мысли, что резюме ‘существует’ в неком абстрактном месте. Но теперь меня беспокоит, что его нельзя открыть, отредактировать или распечатать. То есть все равно его будто нет. Очень помогло бы найти способ ‘разудалить’ файл. Ну и чтобы этот способ не требовал наличие исследовательской IT лаборатории”.
Правда, не беспокойтесь — лаборатории не понадобится. Боле того, если вы не боитесь примитивных графических интерфейсов, то это еще и весьма несложно провернуть. Я продемонстрирую вам, как использовать Test Disk для восстановления файлов.
Как восстанавливать удаленные файлы с помощью TestDisk в Linux
Давайте приведу простой пример: я подключил флешку, загрузил на нее файлы и что-то удалил. Теперь, в моей системе есть возможность удаления файлов прямо с флешки, в обход корзины. Для этого надо на файле нажать правой кнопкой мыши и выбрать “delete”. Будет выведено предупреждение. После нажатия на кнопку “yes” все файлы будут удалены безвозвратно. По крайней мере так кажется.
Но теперь у меня нет этого ужасного чувства. И нет, это не потому что все по сценарию. Я знаю, что мне нужно всего лишь открыть терминал и написать “testdisk” и нажать “enter. И тут наступает один из этих “Linux моментов”. Если у вас нет данного инструмента, то он напишет, как его установить! Просто введите “sudo apt install testdisk”, нажмите “enter” и через 10 секунд он у вас.
Если вы предпочитаете видео, то можете посмотреть ролик с тем же руководством на YouTube канале FOSS:
Шаг 1
Для начала установите инструмент TestDisk. Он есть в официальных репозиториях большинства Linux дистрибутивов. На Ubuntu и Linux дистрибутивах на базе Ubuntu вроде Linux Mint, elementary OS и т.п. для установки TestDisk вы можете использовать следующую команду:
sudo apt install testdisk
Пользователи Arch Linux могут установить его из AUR. В иных дистрибутивах Linux вы можете воспользоваться вот этой ссылкой.
Несмотря на то, что в данном руководстве мы будем говорить о командах в Ubuntu, инструмент не ограничен данным дистрибутивом. Команды, указанные в данной статье, подойдут и в других дистрибутивах.
Шаг 2
Запустите в терминале TestDisk с помощью данной команды:
Шаг 3
Как только он откроется, вы увидите это. Не торопитесь! Интерфейс на самом деле прямолинейный, но текст надо читать внимательно. Используйте стрелки для навигации и ‘Enter’ для подтверждения выбора.
Выберите ‘Create a new log file’
Экран с дополнительными командами их подскажет. Также стоит отметить, что TestDisk 7.0 выделяет следующий логический шаг, но практически всегда правильно читать, что написано на экране, так как инструмент не умеет читать мысли. В любом случае, если TestDisk просто позволения создать log file, соглашайтесь — это полезно.
Шаг 4
Теперь, в данный момент, если вам повезет, вы должны увидеть свой диск. Можете переходить к последним шагам. Но давайте представим, что диска нет, скажем, у вас мультизагрузка. В таком случае права доступа могут съехать, и TestDisk потребует разрешение на открытие. Вы увидите нечто подобное:
Иногда нужны права sudo
Выберите “sudo” и введите пароль. Нажмите “enter” и “enter” снова на следующем экране для того, чтобы создать log file.
Шаг 5
В этот раз TestDisk отобразит все диски. С помощью стрелочек выберите нужный диск и нажмите “enter”:
Необходимо выбрать носитель, на котором мы ищем файлы
Шаг 6
TestDisk снова выбрал верный вариант. Логично, так как простое устройство для хранения данных редко бывает разбитым. Снова жмем “enter”:
Шаг 7
А вот теперь пора подумать. Если вы прочли первый экран (а я в этом не уверен), то наверняка поняли, что это не просто программа для восстановления удаленных файлов. Это мощная дисковая утилита. Но, если мы помним, чего делаем, то выбор не составит труда: мы не пытаемся починить диск, мы пытаемся его восстановить. Выбираем “Advanced” и жмем “enetr”:
Выбираем ‘Advanced’
Шаг 8
Снизу страницы находим “Undelete” и готовимся увидеть привидение!
Выбираем ‘Undelete’
Шаг 9
TestDisk начнет искать файлы и сгенерирует список удаленных файлов, выделенных красным. Стрелкой спускаемся к нему и внимательно изучаем варианты внизу страницы.
Шаг 10
И снова, не забываем, что TestDisk многофункциональное средство. Большинство вариантов отвечает за работу с группами файлов. Нам же просто надо их вернуть! Жмем “c”.
Для копирования нажмите ‘c’ и так вы восстановите файлы
Счет 1-0 в нашу пользу. После нажатия на “c” появились варианты мест для сохранения. По дефолту файлы сохранятся в домашнюю директорию. По сути, это опять отличный вариант, так как навигация в TestDisk местами замороченная.
Пара советов по восстановлению файлов с помощью TestDisk
Во-первых, если вы не понимаете где оказались, для возврата жмите на “q”. Так вы не закроете программу и не потеряете прогресс. “q” ведет себя как кнопка “назад” в классических приложениях с графическим интерфейсом — будете постоянно жать “q”, в какой-то момент окажетесь на стартовом экране.
Во-вторых, чем меньше отвлекающих моментов, тем проще найти то, что ищешь. Иными словами, отключите все не нужные в процессе восстановления хранилища. В минималистичных окружениях простота — друг.
Наконец, TestDisk может помочь восстановить файлы, которые стали недоступны по другим причинам. На самом деле я стал пользоваться ей именно из-за этого. Я пытался сохранить файлы с испорченного диска, отказывающегося запускаться.
Что если диск отформатирован в LVM? Это мой случай. Подключенный LVM диск совсем не похож на обычную Linux ОП. Обычные файлы не появляются, а что-то вычленить не выходит. Это, на ряду с иными причинами, происходит из-за того что большинство файловых менеджеров Linux больше не умеют работать с файловыми системами ext.2
Так или иначе, после печального начала, у меня получилось найти и восстановить утраченные файлы. Отмечу, что в вышеописанном случае шаги будут немного другими. Вам возможно понадобиться использовать функцию “Analyze”. Она приведет диск к нужному состоянию и вам останется только потыкаться в поисках домашней директории. А еще файлы не будут отмеченными красным, ведь их не удаляли. Как только вы их найдете процедура копирования будет такой же.
С TestDisk и небольшой долей удачи вы никогда не потеряете свое резюме, так как всегда сможете восстановить удаленные файлы в Linux.
Источник