ServerAdmin.ru
28.1K subscribers
231 photos
26 videos
10 files
2.56K links
Авторская информация о системном администрировании.

Информация о рекламе: @srv_admin_reklama_bot
Автор: @zeroxzed

Второй канал: @srv_admin_live
Сайт: serveradmin.ru
Download Telegram
​​Расскажу про простую в использовании и полезную утилиту Linux, которая позволяет относительно быстро и просто восстановить удалённые файлы (иногда) или порушенную таблицу разделов (часто) - TestDisk. Меня лично она выручала не раз. Рассказывал про её использование в статье про Восстановление таблицы разделов в Linux.

TestDisk есть в базовых репах Debian и Ubuntu и обычно всегда присутствует во всяких Rescue Live CD. Она умеет следующее:
- исправлять таблицу разделов, восстанавливать удаленные разделы;
- восстанавливать загрузочные сектора;
- восстанавливать удалённые файлы;

Пользоваться утилитой достаточно просто, в сети много инструкций. Разделы я с её помощью восстанавливал. Файлы - нет. Иногда она видела удалённые файлы, но восстановить не получалось. Они все были нулевого размера. Так что на Linux я вообще не знаю и не использовал программы, которые реально могли бы восстановить удалённые файлы. Под виндой такие знаю и использовал, реально восстанавливал файлы. Если кто-то на практике восстанавливал что-то в Linux, поделитесь софтом.

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

Сайт с описанием и реальными примерами восстановления данных или разделов - https://www.cgsecurity.org/wiki/TestDisk_RU
Сохраните программу, когда-нибудь она может здорово выручить.

#restore #terminal
​​Я на днях затрагивал тему восстановления файлов на Linux с помощью testdisk. Решил немного изучить вопрос и попробовать что-то ещё. Выбор пал на программу scalpel, которая оказалась в стандартном репозитории Debian.

Поставил её так:
# apt install scalpel

Scalpel использует базу данных заголовков и колонтитулов файлов. Так что для поиска нужно будет заполнить шаблоны этих файлов. Для наиболее популярных форматов в дефолтном конфиге уже есть эти шаблоны. Найти конфиг можно по адресу /etc/scalplel/scalpel.conf

Я для теста раскомментировал в конфиге шаблоны для jpg файлов. Закинул на диск пару картинок и удалил их. Запустил scalpel для поиска:
# scalpel /dev/mapper/debian10--vg-root -o /tmp/restored

В данном случае /dev/mapper/debian10--vg-root это корневой раздел системы на lvm томе. На удивление поиск прошёл довольно быстро. Искал по ssd диску примерно на максимальной для него скорости чтения в 400 мб/сек.

В итоге нашёл оба файла и положил их в указанную папку /tmp/restored. Там же был отчёт в audit.txt. Я скинул файлы на комп, проверил, всё в порядке. Это те же картинки. Scalpel может искать не только с диска, но и с образа. Так что если надо срочно что-то восстановить, можно тут же погасить машину, снять с неё образ диска и передать куда-то для восстановления данных.

Результат мне очень понравился. Понятно, что восстановление будет зависеть от множества параметров. Тут система была в простое. Я удалил файлы и почти сразу же стал их искать. Почти идеальные условия. Но тем не менее, без лишних заморочек я очень быстро восстановил удалённые файлы. Если случайно грохните какой-то файл по ошибке, можно быстро с помощью scalpel его восстановить. Так что сохраните заметку в закладки, может пригодиться.

Есть важный нюанс. Scalpel ищет по преднастроенной таблице шаблонов файлов. Вам нужно будет самим сделать такой шаблон, если придётся искать файлы, которых в дефолтном шаблоне нет. Для этого нужно будет взять образец файла, открыть его в hex редакторе и изучить его заголовки (signatures). Либо попробовать нагуглить их, что может оказаться значительно проще и быстрее. Под популярные форматы скорее всего найдёте сигнатуры.

#restore
​​Я начал тему восстановления удалённых файлов откуда-то издалека. В комментариях к постам мне постоянно писали про Photorec. Причём я эту программу знаю очень давно. Неоднократно про неё писал в статьях на сайте на тему восстановления файлов после вирусов шифровальщиков. Иногда она позволяла что-то восстановить. Единственное, я не знал, что она и под Linux есть. Использовал её только под виндой.

Так что однозначно рекомендую для восстановления удалённых файлов, повреждённых файловых систем и разметок дисков попробовать Photorec. Ко всему прочему она ещё и бесплатная.

Один раз я очень выручил человека с помощью этой программы. Проектировщик ездил в командировку и нафоткал кучу рабочей информации на объекте. А когда вернулся, карта памяти не открывалась по какой-то причине. Человек в полном отчаянии ко мне обратился. Я без особо энтузиазма решил попробовать помочь и на удивление без проблем восстановил вообще всё. Просто что-то сглючило на карте и все файлы пропали. Для пострадавшего это было сродни чуду. Очень приятно было помочь в такой ситуации. К тому же мне это практически ничего не стоило.

С тех пор у меня всегда на ноуте есть архив с этой программой. Давненько не приходилось пользоваться (постучал 3 раза по деревянному столу), поэтому сразу не вспомнил. И надеюсь ещё долго не понадобится.

Инструкция для Linux / для Windows / Скачать

#restore
Ранее я рассматривал софт для восстановления удалённых файлов в Linux. В комментариях возникали вопросы и обсуждения по поводу механики этого процесса. Сегодня рассмотрим немного теории и частный практический пример из этой области.

Файлы в Linux удаляются с помощью системного вызова unlink. Он удаляет имя из файловой системы. Если это имя было последней ссылкой на файл и больше нет процессов, которые держат этот файл открытым, данный файл удаляется и место, которое он занимает, освобождается для дальнейшего использования. Если имя было последней ссылкой на файл, но какие-либо процессы всё ещё держат этот файл открытым, файл будет оставлен, пока последний файловый дескриптор, указывающий на него, не будет закрыт.

Исходя из этой информации можно легко восстанавливать удалённые файлы, удерживаемые процессом. Выполним простой эксперимент с помощью bash. Создадим тестовый скрипт именем script.sh следующего содержания:

#!/bin/bash
sleep 30000
exit

Устанавливаем бит исполняемости:
# chmod u+x ./script.sh
Запускаем скрипт в фоне и удаляем.
# ./script.sh &
# rm -f ./script.sh

Итак, у нас есть процесс оболочки, который удерживает файл скрипта. Имени уже нету, но есть дескриптор, с которым ассоциирован файл. Нужно получить дескриптор файла. В этом нам поможет команда lsof:
# lsof -c script.sh

В выводе нас интересует PID - идентификатор процесса и FD - дескриптор, ассоциированный со скриптом:
script.sh 17871 root 255r  REG  8,1    30 8400545 /tmp/script.sh (deleted)

Читаем содержимое файла скрипта.
# cat /proc/17871/fd/255

Перенаправляем вывод cat в файл:
# cat /proc/17871/fd/255 > new_script.sh
Получаем наш исходный скрипт, который удалили.

Поднимаем процесс из фона и уничтожаем.
# fg
CTRL+C

Теоретически таким образом можно восстановить удалённые файлы виртуальных машин. Я не раз получал вопросы по этому поводу. Некоторые умудряются по ошибке удалить исходный файл VM, а потом через 2 недели заметить это. При этом машина всё это время успешно работает.

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

#terminal #restore
​​Recuva — популярная бесплатная программа для восстановления удаленных файлов. Разработчики те же самые, что у ccleaner. Я знаю, что у последнего репутация так себе уже много лет. Сам когда-то им пользовался, но давно такого рода программы не использую.

Тем не менее Recuva неплохая программа с большой историей. Первые версии я использовал где-то в районе Windows XP, а может и раньше. Программа работает под Windows и умеет следующее:
- восстанавливать удалённые файлы;
- чинить файловую систему на внешних хранилищах (флешки, карты);
- безвозвратно удалять файлы;
- поддержка ФС: NTFS, FAT, exFAT, EXT3, EXT4.

Интерфейс у программы простой, разбираться особо не надо. Запускаете и с помощью wizard или вручную указываете необходимые действия. Есть русский язык. После установки имеет смысл зайти в настройки и запретить отправку информации об использовании программы.

Если что-то удалили и не смогли восстановить другими программами, имеет смысл попробовать и Recuva. Напоминаю другие бесплатные программы для восстановления данных: Photorec (Windows), TestDisk (Linux), Scalpel (Linux).

Сайт - https://www.ccleaner.com/recuva
Если выбрать русский язык на сайте, то на страницах продукта 404 ошибка. Не понял, то ли это ошибка, то ли ссанкции какие-то ввели. Если вручную выбрать EN, то всё нормально открывается и скачивается.

#restore
​​Среди программ для восстановления данных есть безусловный лидер с огромным функционалом. Каждый раз, когда пишу про подобные программы, вижу её упоминание - UFS Explorer Professional Recovery. Это сильно платная программа, бесплатной версии нет вообще. Обычно не пишу про подобный софт, но в этот раз решил сделать исключение по двум причинам.

1. Эта программа может буквально спасти человека в сложной или безвыходной ситуации.
2. Есть возможность её найти пролеченную и воспользоваться. Я не практикую и не призываю к таким подходам, но решать вам. Найти через поиск подходящий торрент не составляет большого труда.

UFS Explorer Professional Recovery поддерживает для установки и запуска все популярные системы (Windows, Linux, MacOS). То же самое с поддержкой файловых систем прочих технологий, используемых для хранения данных. Список огромный:
Windows: NTFS, FAT, FAT32, exFAT, ReFS/ReFS3;
macOS: HFS+, APFS;
Linux: Ext2, Ext3, Ext4, XFS, Extended format XFS, JFS, ReiserFS, UFS, UFS2, Adaptec UFS, big-endian UFS, Btrfs, F2FS;
BSD/Solaris: ZFS volumes;
VMware: VMFS, VMFS6.

Помимо непосредственно файловых систем, поддерживается восстановление данных с различных рейд контроллеров, как железных, так и софтовых:
- mdadm, LVM, Apple Software RAID, Intel Matrix, и т.д.
- Drobo BeyondRAID, Synology Hybrid RAID, Btrfs-RAID
- классические RAID 0, RAID 1E, RAID 3, RAID 5, RAID 6, RAID 7 на базе стандартных реализаций
- зеркальные уровни RAID level 10, 50, 60, 50E и т.д.
- ZFS and RAID-Z (RAID-Z, RAID-Z2, RAID-Z3)

Умеет находить и восстанавливать образы дисков виртуальных машин: VMware VMDK, Hyper-V VHD/VHDX, QEMU/XEN QCOW/QCOW2, VirtualBox VDI, Apple DMG, Paralles, EnCase E01 and Ex01.

UFS Explorer Professional Recovery - софт профессионального уровня, который часто используют компании, специализирующиеся на восстановлении данных. Сразу предупрежу, что разработчики из Украины, так что аккуратнее с программной. Используйте на свой страх и риск, предприняв все меры предосторожности. Купить её, даже при желании, не получится.

Сайт / Информация на ru-board

#restore
​​На примере отличного бесплатного софта для восстановления удалённых файлов под названием R-Linux я рассмотрю ситуацию, когда по ошибке удалён нужный файл. Надо будет его восстановить.

Для начала немного теории. Почему возможно восстановить удалённый файл? Потому что он состоит из трех сущностей - запись в каталоге с соответствием имени и inode, самой inode и блоков данных. При удалении файла стирается запись в каталоге, а inode и блоки помечаются как свободные. В них остаются данные до тех пор, пока они не будут использованы заново. Тут есть важный нюанс. Если какой-то процесс держит удалённый файл открытым, то inode и блоки данных не будут помечены свободными, пока не будет закрыт последний файловый дескриптор, указывающий на файл. В этом случае восстановить удалённый файл очень просто. Я описывал такую ситуацию отдельно.

В моём примере я удалю файл безвозвратно и держать открытым его никто не будет. Возьмём систему Debian 11 и файловую систему ext4. Удалим стартовую страницу nginx - /var/www/html/index.nginx-debian.html
# rm -f /var/www/html/index.nginx-debian.html

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

Я подключил к этой виртуальной машине CD-ROM, вставил туда LIVE образ Debian 11 с xfce и загрузился с него. Далее установил RLinux5. Можно скачать с сайта через браузер, либо через консоль:
# wget https://www.r-studio.com/downloads/RLinux5_x64.deb
# dpkg -i RLinux5_x64.deb

Запустил RLinux. Программа с графическим интерфейсом, так что работать с ней легко. Она увидела мой жёсткий диск и все разделы на нём. Я выбрал раздел, на котором был удалён файл и выполнил сканирование уровня detailed. Затем открыл обзор файлов на этом же разделе.

Пошёл в директорию /var/www/html/ и увидел там свой файл, помеченный как удалённый. Там же можно выбрать этот файл и нажать кнопку Recover. Программа сообщила, что файл восстановлен. Я обрадовался, что всё получилось так просто и быстро. Но радоваться было рано. Файл оказался пустым.

Тут я приуныл. В данном эксперименте условия идеальные. Файл с очень большой долей вероятности должен быть цел. Решил выполнить поиск по всем удалённым файлам. Получил большой список файлов с названиями вида $inodeindx0001ff23. Стал выборочно проверять те, которые по размеру могут быть похожи на удалённый файл. И нашёл его. Результат на картинке. Выбрал файл, нажал Recover и сохранил его в другое место.

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

❗️Заметку имеет смысл сохранить и надеяться, что никогда не пригодится. Тут готовая инструкция как с большой долей вероятности восстановить случайно удалённый файл, если действовать оперативно. Но вообще программа R-Linux умеет много всего: восстанавливать разделы, файловые системы, делать корректно образы с повреждённых дисков и т.д. На сайте подробно всё описано.

Сайт - https://www.r-studio.com/ru/free-linux-recovery

#restore
​​Практически ко всем заметкам с программами для восстановления данных были комментарии с упоминанием DMDE. Это платная программа, у которой есть бесплатная версия с несильно критичным ограничением - 4000 файлов за раз. Для восстановления случайно удалённых файлов это вообще не критично. Ограничение станет актуальным, если вы будете восстанавливать целый диск или раздел со всеми уничтоженными данными.

DMDE существует под все распространённые системы - Windows, MacOS, Linux (gui и cli версии). Она популярна и качественна, есть русская версия, да и сам автор русскоязычный - Дмитрий Сидоров. Для того, чтобы пользоваться, особо разбираться не надо. Всё интуитивно понятно, плюс в сети много руководств и видео на ютубе. Да и на самом сайте есть подробная инструкция на русском от автора.

 📌 Основные возможности программы:
портативный запуск без установки
поддержка ФС NTFS, FAT12/16, FAT32, exFAT, ReFS, Ext2/Ext3/Ext4, btrfs, HFS+/HFSX,
APFS
менеджер разделов с возможностью быстро восстановить удалённый или потерянный раздел
клонирование и создание образов системы с пропуском нечитаемых секторов

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

Сайт - https://dmde.ru

#restore
​​Летом была новость, что у платной программы HDDSuperClone были открыты исходники. Она стала полностью бесплатной, в том числе Pro версия. Я сейчас кратко поясню в чём её особенность и предложу вам связку из двух программ, сохранить себе на чёрный день, если вдруг понадобится восстановить данные с обычных дисков. Их хоть активно и заменяют SSD, но тем не мнее, HDD ещё используются. У меня как-то в NAS накрылся обычный диск, пришлось восстанавливать данные. Писал статью об этом.

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

Принцип работы драйвера следующий. Во время чтения с диска различными программами по восстановлению данных, всё, что удалось прочитать, драйвер пишет на виртуальный диск. А те данные, что нестабильны или их не удаётся сразу прочитать, считываются с диска. Таким образом, увеличивается шанс восстановления данных с минимальным беспокойством сбойного диска. Всё, что удалось с него прочитать и сохранить, считывается с копии, а всё остальное пробуют прочитать с него. Это функционал в прошлом платной версии. Сейчас она бесплатна.

На сайте популярной бесплатной программы для восстановления данных R-Linux есть подробная статья с описанием восстановления данных с умирающего жёсткого диска с помощью связки R-Studio и HDDSuperClone. Сохраните себе эту информацию, чтобы потом не пришлось искать и подбирать программы для этих целей.

Сайт / Исходники / R-Studio и HDDSuperClone / Видеоинструкции

#restore
​​Сколько администрировал Windows, всё время пользовался какими-то загрузочными образами для реанимации умерших систем. Образы эти представляли из себя сборки всевозможного софта, бесплатного и не очень.

При этом для Linux такого изобилия не припоминаю. Из того, что использовал лично - Frenzy во времена Freebsd. Связано это скорее всего с тем, что практически любой образ c Linux можно загрузить в режиме Live CD и сделать всё, что нужно. То есть берём базовый ISO для Debian, загружаемся в Live режиме. Если есть сеть, настраиваем её, и устанавливаем необходимый софт. Для реанимации системы чаще всего ничего устанавливать не надо, так как обычно достаточно проверить диски, загрузчик, пересобрать initramfs, обновить или установить какой-то драйвер.

Отмечу один известный мне загрузочный образ на базе Linux, ориентирующийся на восстановление системы - SystemRescue. Его часто можно увидеть у хостеров как один из вариантов загрузки системы, если загрузка с основного диска не работает и система не стартует.

По сути это обычный Linux с предустановленным набором софта, который может понадобиться для восстановления работы системы или восстановления данных. Полный список установленных пакетов представлен на сайте. Например, упоминаемый ранее whdd там тоже присутствует, как и clonezilla, memtest86, rclone и многие другие.

SystemRescue собран на базе Arch Linux, в качестве графического окружения используется xfce. В составе сборки есть сервер x11vnc, так что можно загрузиться и предоставить доступ к окружению по сети, если ssh будет недостаточно.

Данный образ можно использовать не только для систем на базе Linux, но и для Windows. Например, можно загрузиться, настроить сеть, подмонтировать (примонтировать?) ntfs диски и скопировать куда-то информацию. Или ту же проверку дисков сделать с помощью whdd.

Сайт / Исходники

#linux #restore
​​Настраивал скрипт бэкапа с автоматическим удалением старых копий. Во время отладки и бэкапы, и сам скрипт лежали в одной директории. Напутал с условием удаления и случайно был удалён сам скрипт после выполнения. Так как ещё не успел его никуда сохранить, это была единственная копия.

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

Сразу вспомнил про программу scalpel, о которой уже когда-то давно писал. Но там был пример синтетический, хотя он и сработал. А тут будет самый что ни на есть реальный. Ставим программу:

# apt install scalpel

Далее нам нужно указать сигнатуры восстанавливаемых файлов. Часть сигнатур есть в самом файле конфигураций - /etc/scalpel/scalpel.conf. Ещё более подробный список можно посмотреть тут в репозитории. Я не совсем понял, какие заголовки должный быть у обычного текстового файла, коим являлся мой скрипт. По идее там особых заголовков и нет, а искать можно по содержимому. Так что я добавил в scalpel.conf следующее:

NONE   y   1000   #!/bin/bash

В данном случае #!/bin/bash это начало моего скрипта. Я их все так начинаю. Запускаем сканирование с выводом результатов в /tmp/restored:

# mkdir /tmp/restored
# scalpel /dev/mapper/zabbix-vg-root -o /tmp/restored

zabbix-vg-root - корневой и единственный lvm раздел этого сервера. Если у вас не используется lvm, то это будет что-то вроде /dev/sda2 и т.д.

Программа минуты за 3-4 просканировала раздел на 50G и вывела результаты в указанную директорию. Там было около сотни различных текстовых скриптов, а нужный мне был где-то в самом начале списка, так что мне даже по содержимому искать не пришлось. Сразу нашёл при беглом осмотре. Всё содержимое файла сохранилось.

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

#restore #linux