Сравнение версий
Ключ
- Эта строка добавлена.
- Эта строка удалена.
- Изменено форматирование.
Оглавление |
---|
В данной статье рассматриваются средства восстановления данных в случаях:
- повреждения (отказа) оборудования (физического повреждения носителей информаци);
- искажения структуры хранения данных (удаление дисковых разделов, форматирование);
- удаления данных (удаление файлов или каталогов);
В данной статье предполагается, что читатель знаком с основными типами файловых систем их особенностями их внутренней структуры.
Предупреждение |
---|
В любом случае следует помнить, что:
|
Информация | ||
---|---|---|
| ||
|
GNU ddrescue: Копирование данных с повреждённых носителей
Инструмент GNU ddrescue (не путать с инструментом dd_rescue) копирует данные из одного (повреждённого) источника в другой, предпринимая максимально возможные усилия для максимально возможного извлечения данных.
Инструмент GNU ddrescue входит в дистрибутивы Astra Linux и может быть установлен командой:
Command |
---|
sudo apt install gddrescue |
Общий синтаксис вызова:
Command |
---|
sudo ddrescue [<параметры>] <источник_данных> <приёмник_данных> [<карта>] |
После вызова инструмент сначала пытается скопировать данные из указанного источника в указанный приёмник пропуская "сбойные данные". При этом чтение осуществляется в прямом и обратном направлении постепенно уменьшающимися блоками, а результаты копирования запоминаются в "карте" (журнале хода копирования). После завершения копирования легкодоступных данных информация, сохранённая в "карте", используется для попыток копирования пропущенных "сбойных" участков. При этом наличие "карты" позволяет в произвольные моменты времени останавливать и возобновлять операцию копирования, не выполняя чтение ранее скопированных участков. Таким образом, возможное нарастание повреждений носителя в процессе работы не повлияет на уже прочитанные данные.
Раскрыть | ||
---|---|---|
| ||
|
Информация |
---|
Параметр "карта" является необязательным, но именно его применение делает инструмент действительно эффективным. |
В качестве источника и приёмника могут быть использованы любые блочные устройства в любых сочетаниях: накопители (например, /dev/sdb), дисковые разделы (/dev/sdb1), файлы.
В параметрах вызова команды могут быть указаны (подробнее см. man ddrescue):
- -r N - количество повторных попыток чтения повреждённых блоков;
- -i NNN - начало зоны чтения;
- -d - прямое чтение без использования буферов ядра;
- -f - разрешение переписывать данные в приёмнике (используется для записи в приёмники, являющиеся устройствами).
- -n - быстрое чтение без фазы "выцарапывания" данных;
- -A - пометить все сбойные области как непрочитанные. Применяется для восстановления после потери источника и его последующего подключения.
Примеры:
Пример 1. Быстро копируем доступные данные с дискового накопителя /dev/sdh в файл-образ file.tmp используя карту map.tmp:
Command | ||
---|---|---|
| ||
GNU ddrescue 1.21 |
Пример 2. В приведённом выше примере использован исправный диск, ошибок нет. При возникновении ошибок чтения - повторно копируем даные с накопителя, извлекая данные из повреждённых частей. Используются карта и файл образа, созданные при первой попытке копирования, извлечённые данные добавляются в образ, выполняются 3 попытки повторного чтения повреждённых данных, и используется прямой доступ к данным (-d):
Command |
---|
sudo ddrescue -f -d -r3 /dev/sdh file.tmp map.tmp |
Информация |
---|
Полученный таким способом образ диска можно использовать следующим способом:
|
Копировать весь диск не обязательно, можно копировать отдельные дисковые разделы или даже только важные файлы (если они доступны, на повреждённом диске разделы и файлы могут не определяться).
Пример 3. Копирование отдельно дискового раздела /dev/sdb1 в новый дисковый раздел /dev/sdc1 (новый раздел должен быть создан заранее и иметь достаточный дла размещения данных размер). Команды отличаются от команд в предыдущем примере только названиями истоника и приёмника:
Command |
---|
sudo ddrescue -f /dev/sdb1 /dev/sdc1 partmap.tmp sudo ddrescue -f -r3 /dev/sdb1 /dev/sdc1 partmap.tmp |
Пример 4. Перезапуск копирования после отказа и восстановления диска-источника (например, диск-источник перестал отвечать, но удалось заставить его работать после переподключения).
Можно указать смещение, с которого нужно продолжить копирование (для этого использовать информацию о выполненом копировании, полученную в предыдуще попытке копирования):
Command |
---|
sudo ddrescue -f -r3 -i 1234567000 /dev/sdb /dev/sdc map.tmp |
Можно продолжить копирование в обратном порядке:
Command |
---|
sudo ddrescue -f -r3 -R /dev/sdb /dev/sdc map.tmp |
Можно пометить сбойные области как непрочитанные для повторного чтения (рекомендуется при возобновлении копирования после потери диска):
Command |
---|
sudo ddrescue -f -r3 -A /dev/sdb /dev/sdc map.tmp |
Пример 5. Отказы носителей-приёмников. Если копирование прервано из-за отказа со стороны диска-приёмника (/dev/sdc), можно скопировать содержимое неисправного приёмника на третий диск (/dev/sdd) и продолжить копирование из источника:
Command |
---|
sudo ddrescue -f -m map.tmp /dev/sdc /dev/sdd newmap.tmp sudo ddrescue -f -n /dev/sdb /dev/sdd newmap.tmp sudo ddrescue -f -d -r3 /dev/sdb /dev/sdd newmap.tmp |
Пакет testdisk: восстановление данных с повреждённых дисковых разделов
Пакет testdisk входит в дистрибутивы Astra Linux, по умолчанию не устаналивается, и может быть установлен командой:
Command |
---|
sudo apt install testdisk |
В состав пакета входят два инструмента:
- testdisk - восстановление повреждённой структуры дисковых разделов и повреждённой файловой структуры в этих разделах;
- photorec - поиск и извлечение видео и изображений из повреждённой файловой структуры путём прямого доступа к данным;
Инструмент testdisk
Инструмент testdisk выполяет анализ информации, хранящейся в заданном блочном устройстве, и пытается найти известные ему структуры данных (дисковые разделы, таблицы файлов, каталоги и пр.). В качестве устройства может использоваться диск (/dev/sdb) , дисковый раздел (/dev/sdb1), или файл, содержащий образ диска или дискового раздела. Инструмент может:
- Исправлять ошибки в дисковых разделах и восстанавливать удалённые разделы;
- Восстанавливать загрузочные секторы FAT32/NTFS из резервной копии;
- Пересобирать загрузочные секторы FAT12/FAT16/FAT32/NTFS;
- Исправлять таблицы FAT;
- Исправлять таблицы MFT используя зеркала MFT;
- Обнаруживать резервные суперблоки ext2/ext3/ext4;
- Восстанавливать удалённые файлы в FAT/exFAT/NTFS/ext2;
- Копировать файлы из удалённых дисковых разделов FAT/exFAT/NTFS/ext2/ext3/ext4.
Инструмент использует текстовый псевдографический интерфейс.
Пример . Для примера используется образ дискового накопителя в файле file.tmp, сделанный с помощью инструмента ddrescue (см. предыдущую главу). Команда:запуска инструмента для анализа накопителя (как было указано выше, можно использовать не носитель, а его образ в файле):
Command |
---|
sudo testdisk file.tmp |
Инструмент photorec
Инструмент photorec не использует файловую структуру, а анализирует непосредственно содержимое заданного устройства, пытаясь по содержимому определить известные ему типы файлов и извлечь их. При таком способе извлечения не сохраняются названия файлов, которые придётся восстанавливать анализируя восстановленные файлы. Как и testdisk, инструмент использует текстовый псевдографический интерфейс, и может быть запущен из командной строки командой:
Command |
---|
sudo photorec file.tmp |
После запуска инструмента выводится информация о заданном носителе:
Блок кода |
---|
TestDisk 7.1, Data Recovery Utility, July 2019
Christophe GRENIER <grenier@cgsecurity.org>
https://www.cgsecurity.org
TestDisk is free software, and
comes with ABSOLUTELY NO WARRANTY.
Select a media (use Arrow keys, then press Enter):
>Disk file.tmp - 80 GB / 74 GiB
>[Proceed ] [ Quit ]
Note: Disk capacity must be correctly detected for a successful recovery.
If a disk listed above has an incorrect size, check HD jumper settings and BIOS
detection, and install the latest OS patches and disk drivers.
|
Для продолжения нажать Enter, после чего будут предложены варианты действий с носителем:
/dev/sdb |
После запуска инструмента выводится информация о заданном в параметрах вызова устройстве:
Блок кода |
---|
TestDisk 7.0, Data Recovery Utility, April 2015
Christophe GRENIER <grenier@cgsecurity.org>
http://www.cgsecurity.org
TestDisk is free software, and
comes with ABSOLUTELY NO WARRANTY.
Select a media (use Arrow keys, then press Enter):
>Disk /dev/sdb - 8589 MB / 8192 MiB - VBOX HARDDISK
>[Proceed ] [ Quit ]
Note: Disk capacity must be correctly detected for a successful recovery.
If a disk listed above has incorrect size, check HD jumper settings, BIOS
detection, and install the latest OS patches and disk drivers.
|
Для продолжения нажать Enter, после чего будут предложены варианты выбора структуры носителя:
Блок кода |
---|
TestDisk 7.0, Data Recovery Utility, April 2015
Christophe GRENIER <grenier@cgsecurity.org>
http://www.cgsecurity.org
Disk /dev/sdb - 8589 MB / 8192 MiB - VBOX HARDDISK
Please select the partition table type, press Enter when done.
>[Intel ] Intel/PC partition
[EFI GPT] EFI GPT partition map (Mac i386, some x86_64...)
[Humax ] Humax partition table
[Mac ] Apple partition map
[None ] Non partitioned media
[Sun ] Sun Solaris partition
[XBox ] XBox partition
[Return ] Return to disk selection
Note: Do NOT select 'None' for media with only a single partition. It's very
rare for a disk to be 'Non-partitioned'.
|
Предупреждение |
---|
С высокой вероятностью testdisk самостоятельно определит структуру носителя, однако для восстановления желательно знать, как был размечен накопитель. В частности, сравнительно редко, встречаются накопители, отформатированные без дисковых разделов (в примере выше пункт "[None ] Non partitioned media"). Попытки поиска дисковых разделов на таком накопителе (в примере выше пункт "[Intel] Intel/PC partitition") будут бесполезной тратой времени и ресуса накопителя. |
Выбрав подходящий тип накопителя, нажать Enter, после чего откроется меню возможных действий:
Блок кода |
---|
TestDisk 7.0, Data Recovery Utility, April 2015
Christophe GRENIER <grenier@cgsecurity.org>
http://www.cgsecurity.org
Disk /dev/sdb - 8589 MB / 8192 MiB - VBOX HARDDISK
CHS 1044 255 63 - sector size=512
>[ Analyse ] Analyse current partition structure and search for lost partitions
[ Advanced ] Filesystem Utils
[ Geometry ] Change disk geometry
[ Options ] Modify options
[ MBR Code ] Write TestDisk MBR code to first sector
[ Delete ] Delete all data in the partition table
[ Quit ] Return to disk selection
Note: Correct disk geometry is required for a successful recovery. 'Analyse'
process may give some warnings if it thinks the logical geometry is mismatched. |
Первый пункт "Analize" позволяет найти дисковые разделы и восстановить таблицу дискоковых разделов:
Блок кода |
---|
TestDisk 7.0, Data Recovery Utility, April 2015
Christophe GRENIER <grenier@cgsecurity.org>
http://www.cgsecurity.org
Disk /dev/sdb - 8589 MB / 8192 MiB - CHS 1044 255 63
Current partition structure:
Partition Start End Size in sectors
No partition is bootable
*=Primary bootable P=Primary L=Logical E=Extended D=Deleted
>[Quick Search]
Try to locate partition |
Если носитель исправлен, то будует показана информация о дисковых разделах. В примере выше дисковые разделы не найдены. Если разделы не найдены - следует выбрать пункт "Quick Search" (нажать Enter), после чего будет выполнено "быстрое" сканирование носителя и поиск дисковых разделов:
Блок кода |
---|
TestDisk 7.0, Data Recovery Utility, April 2015
Christophe GRENIER <grenier@cgsecurity.org>
http://www.cgsecurity.org
Disk /dev/sdb - 8589 MB / 8192 MiB - CHS 1044 255 63
Partition Start End Size in sectors
>* Linux 0 32 33 510 14 16 8192000 [first]
P Linux 510 14 17 1044 85 1 8583168 [second]
Structure: Ok. Use Up/Down Arrow keys to select partition.
Use Left/Right Arrow keys to CHANGE partition characteristics:
*=Primary bootable P=Primary L=Logical E=Extended D=Deleted
Keys A: add partition, L: load backup, T: change type, P: list files,
Enter: to continue
ext4 blocksize=4096 Large_file Sparse_SB, 4194 MB / 4000 MiB |
Отображается информация о двух найденных разделах и предлагается настроить их параметры или посмотреть содержимое (файлы). После вполнения небходимых действий надать Enter, после чего произойдёт возврат в список разделов:
Блок кода |
---|
TestDisk 7.0, Data Recovery Utility, April 2015
Christophe GRENIER <grenier@cgsecurity.org>
http://www.cgsecurity.org
Disk /dev/sdb - 8589 MB / 8192 MiB - CHS 1044 255 63
Partition Start End Size in sectors
1 * Linux 0 32 33 510 14 16 8192000 [first]
2 P Linux 510 14 17 1044 85 1 8583168 [second]
[ Quit ] >[Deeper Search] [ Write ]
Try to find more partitions |
На этом этапе можно либо выполнить повторное "глубокое" сканирование (Deep Search), либо записать восстановленную информацию о разделах на носитель.
Для восстановления повреждённой файловой системы в дисковых разделах в меню возможных действий с накопителем:
Блок кода |
---|
TestDisk 7.0, Data Recovery Utility, April 2015
Christophe GRENIER <grenier@cgsecurity.org>
http://www.cgsecurity.org
Disk /dev/sdb - 8589 MB / 8192 MiB - VBOX HARDDISK
CHS 1044 255 63 - sector size=512
[ Analyse ] Analyse current partition structure and search for lost partitions
>[ Advanced ] Filesystem Utils
[ Geometry ] Change disk geometry
[ Options ] Modify options
[ MBR Code ] Write TestDisk MBR code to first sector
[ Delete ] Delete all data in the partition table
[ Quit ] Return to disk selection
Note: Correct disk geometry is required for a successful recovery. 'Analyse'
process may give some warnings if it thinks the logical geometry is mismatched. |
выбрать пункт "Advanced", после чего в списке дисковых разделов выбрать нужный раздел :
Блок кода |
---|
TestDisk 7.0, Data Recovery Utility, April 2015
Christophe GRENIER <grenier@cgsecurity.org>
http://www.cgsecurity.org
Disk /dev/sdb - 8589 MB / 8192 MiB - CHS 1044 255 63
Partition Start End Size in sectors
> 1 * Linux 0 32 33 510 14 16 8192000 [first]
2 P Linux 510 14 17 1044 85 1 8583168 [second]
[ Type ] >[Superblock] [ List ] [Image Creation] [ Quit ]
Locate ext2/ext3/ext4 backup superblock |
После чего выбрать и выполнить возможные действия:
- Type - уточнить тип дискового раздела, если он определён неверно;
Superblock - выполнить поиск суперблоков для восстановления файловой системы с помощью команды fsckю При выводится список найденных суперблоков и их параметры (номер и размер). В последней строке содержится подсказка, как передать параметры суперблоков в команду fsck:
Блок кода TestDisk 7.0, Data Recovery Utility, April 2015 Christophe GRENIER <grenier@cgsecurity.org> http://www.cgsecurity.org Disk /dev/sdb - 8589 MB / 8192 MiB - CHS 1044 255 63 Partition Start End Size in sectors Linux 0 32 33 510 14 16 8192000 [first] superblock 0, blocksize=4096 [first] superblock 32768, blocksize=4096 [first] superblock 98304, blocksize=4096 [first] superblock 163840, blocksize=4096 [first] superblock 229376, blocksize=4096 [first] superblock 294912, blocksize=4096 [first] superblock 819200, blocksize=4096 [first] superblock 884736, blocksize=4096 [first] To repair the filesystem using alternate superblock, run fsck.ext4 -p -b superblock -B blocksize device
- List - просмотреть список файлов;
- Image Creation - создать образ раздела;
Инструмент photorec
Инструмент photorec не использует файловую структуру, а анализирует непосредственно содержимое заданного устройства, пытаясь по содержимому определить известные ему типы файлов и извлечь их.
Информация |
---|
При таком способе извлечения не сохраняются названия файлов, которые придётся восстанавливать анализируя восстановленные файлы. |
Как и testdisk, инструмент использует текстовый псевдографический интерфейс, и может быть запущен из командной строки командой:
Command |
---|
sudo photorec /dev/sdb1 |
На стартовой странице предлагается подтвердить выбор носителя для поиска:
Блок кода |
---|
PhotoRec 7.0, Data Recovery Utility, April 2015
Christophe GRENIER <grenier@cgsecurity.org>
http://www.cgsecurity.org
PhotoRec is free software, and
comes with ABSOLUTELY NO WARRANTY.
Select a media (use Arrow keys, then press Enter):
>Disk /dev/sdb1 - 4194 MB / 4000 MiB (RO) - VBOX HARDDISK
>[Proceed ] [ Quit ]
Note:
Disk capacity must be correctly detected for a successful recovery.
If a disk listed above has incorrect size, check HD jumper settings, BIOS
detection, and install the latest OS patches and disk drivers. |
Для продолжения нажать Enter, выбрать нужный дисковый раздел и снова нажать Enter:
Блок кода |
---|
PhotoRec 7.0, Data Recovery Utility, April 2015
Christophe GRENIER <grenier@cgsecurity.org>
http://www.cgsecurity.org
Disk /dev/sdb1 - 4194 MB / 4000 MiB (RO) - VBOX HARDDISK
Partition Start End Size in sectors
Unknown 0 0 1 509 236 47 8192000 [Whole disk]
> P ext4 0 0 1 509 236 47 8192000 [first]
>[ Search ] [Options ] [File Opt] [ Quit ]
Start file recovery |
Выбрать файловую систему, в которой искать файлы и снова нажать Enter:
Блок кода |
---|
PhotoRec 7.0 |
Блок кода |
TestDisk 7.1, Data Recovery Utility, JulyApril 20192015 Christophe GRENIER <grenier@cgsecurity.org> httpshttp://www.cgsecurity.org Disk file.tmp - 80 GB / 74 GiB Please select the partition table type, press Enter when done. [Intel ] Intel/PC partition [EFI GPT] EFI GPT partition map (Mac i386, some x86_64...) [Humax ] Humax partition table [Mac ] Apple partition map (legacy) >[None ] Non partitioned media [Sun ] Sun Solaris partition [XBox ] XBox partition [Return ] Return to disk selection Hint: None partition table type has been detected. P ext4 0 0 1 509 236 47 8192000 [first] To recover lost files, PhotoRec need to know the filesystem type where the file were stored: >[ ext2/ext3 ] ext2/ext3/ext4 filesystem [ Other ] FAT/NTFS/HFS+/ReiserFS/... |
Выбрать область поиска ("Free" - поиск удалённых файлов, "Whole" - поиск всех файлов) и нажать Enter:
Блок кода |
---|
PhotoRec 7.0, Data Recovery Utility, April 2015
Christophe GRENIER <grenier@cgsecurity.org>
http://www.cgsecurity.org
P ext4 0 0 1 509 236 47 8192000 [first]
Please choose if all space need to be analysed:
[ Free ] Scan for file from ext2/ext3 unallocated space only
>[ Whole ] Extract files from whole partition |
После чего выбрать каталог, в который будут копироваться обнаруженные файлы, и нажать C В рассматриваемом примере testdisk определил, что ему преложено работать с носителем без дисковых разделов ("Non partitioned media"). Более общим случаем является диск,
Информация |
---|
WEB-сайт разработчиков TestDisk: http://www.cgsecurity.org Документация от разработчиков: TestDisk Documentation |