Проблема повреждённых жёстких дисков знакома многим: диск начинает работать со сбоями, система зависает, файлы неожиданно исчезают. В таких ситуациях обычные методы восстановления могут только усугубить проблему, вызывая перезапись данных.
Лучшее решение — создать образ диска и работать с ним, а не с оригиналом.
В этой статье разберём, как:
скопировать весь диск в файл-образ;
смонтировать повреждённый раздел и извлечь файлы;
восстановить удалённые файлы или повреждённую файловую систему NTFS.
Сначала рассмотрим основные шаги, а затем сложности, которые могут возникнуть в процессе, и пути их решения.

Шаг 1. Создаём образ диска с утилитой ddrescue
Если диск «умирает», в первую очередь стоит создать его образ. Попытки работы с диском напрямую могут только ухудшить ситуацию.
Обычно для создания копии диска рекомендуют утилиту dd. Однако она работает по принципу «всё или ничего»: если диск содержит повреждённые секторы, dd может зависнуть.
Утилита ddrescue эффективнее. Она:
пропускает битые блоки и продолжает копирование;
создаёт карту повреждений (mapfile), позволяя продолжить процесс при сбоях;
позволяет объединять копии дисков, например из двух разных попыток.
Мы будем использовать именно ddrescue.
Создание образа
Сначала определим имя диска (/dev/sdX
):
~ $ lsblk
Теперь создадим образ:
~ $ sudo ddrescue -d /dev/sdX image.img mapfile
Параметры команды:
/dev/sdX
— оригинальный диск;image.img
— файл, куда будет сохраняться образ;mapfile
— файл — контрольная карта битых секторов (позволяет перезапустить процесс создания образа, не начиная заново).
Как узнать, сколько данных удалось восстановить?
Во время работы ddrescue показывает:
количество прочитанных и пропущенных секторов;
скорость копирования;
сколько раз пытались перечитать повреждённые блоки.
Шаг 2. Анализ содержимого образа
Теперь у нас есть образ image.img
, но что внутри?
Определяем разметку и таблицу разделов:
~ $ sudo parted image.img unit B print
Вывод может выглядеть так:
Model: (file)
Disk image.img: 500107862016B
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 1048576B 2097151B 1048576B fat32
2 2097152B 105906175B 103809024B ext4
3 105906176B 500107861375B 499001955200B ntfs
Из вывода видно следующее:
Partition Table: gpt (разметка GPT).
Третий раздел sda3 (NTFS), он нам и нужен.
Раздел начинается с 105906176B.
Как определить, какой раздел нужен
Смотрим на тип файловой системы.
Если восстанавливаем файлы с Windows-раздела, ищем NTFS.
Если работаем с Linux-разделом, нас интересуют ext4, ext3, xfs и т. д.
Если ищем загрузочный раздел, он часто бывает FAT32 (например, EFI-раздел).
Альтернативные методы анализа образа:
~ $ fdisk -l image.img
~ $ sfdisk -d image.img
Шаг 3. Подключаем и монтируем образ
Теперь нам нужно получить доступ к нужному разделу. Для этого создадим в Linux эмулятор диска, который откроет доступ ко всем разделам.
Использование losetup
Создаём loop-устройство для работы с образом. Это виртуальное устройство, которое позволяет работать с образом диска так, как будто это обычный физический диск. Для его создания используется команда losetup
:
~ $ sudo losetup -Pf --show image.img
Вывод:
/dev/loop0
Теперь разделы отображаются как /dev/loop0p1
, /dev/loop0p2
, /dev/loop0p3
.
Утилита losetup входит в состав пакета util-linux. Ключ -P
, который появился в версии 2.21, позволяет автоматически сканировать и добавлять разделы при подключении loop-устройства.
Для проверки версии использовать команду:
~ $ losetup --version
losetup from util-linux 2.37.2
Если у вас старый losetup, без -P
, можно использовать kpartx
:
~ $ sudo kpartx -a image.img
~ $ ls /dev/mapper/
Монтирование нужного раздела: sda3, NTFS
Теперь создадим точку монтирования:
~ $ sudo mkdir -p /mnt/recovery
Монтируем раздел /dev/loop0p3
:
~ $ sudo mount -o ro,uid=$(id -u),gid=$(id -g) /dev/loop0p3 /mnt/recovery
Флаги uid
и gid
позволяют работать с файлами не только root-пользователю, но и обычному пользователю.
Если файловая система была повреждена, монтирование может не пройти. Тогда стоит использовать другие методы, о которых рассказано дальше в статье.
Шаг 4. Извлечение файлов
Теперь файлы доступны в /mnt/recovery
. Можно их копировать:
~ $ cp -r /mnt/recovery/имя_папки ~/backup/
Если требуется копирование с сохранением структуры и прав:
~ $ rsync -av /mnt/recovery/ ~/backup/
Для архивации:
~ $ tar czvf backup.tar.gz -C /mnt/recovery
Шаг 5. Завершение работы
После копирования данных нужно отключить loop-устройство:
~ $ sudo umount /mnt/recovery
~ $ sudo losetup -d /dev/loop0
Что делать с ошибкой device is busy
Используйте fuser
для поиска процессов, которые удерживают монтирование:
~ $ sudo fuser -vm /mnt/recovery
Затем завершите их с помощью команды:
kill -9 PID
На этом с основными шагами мы закончили. Переходим к сложностям, с которыми вы можете столкнуться в процессе, и вариантам их решения.
Что делать, если NTFS-раздел не монтируется
Если NTFS-раздел повреждён, стандартный драйвер может отказать в монтировании. Используем вместо него ntfs-3g.
Принудительное монтирование NTFS
Если стандартная команда mount -t ntfs
не сработала, попробуйте отключить стандартный драйвер и явно указать ntfs-3g:
~ $ sudo mount -t ntfs-3g /dev/loop0p3 /mnt/recovery
Восстановление файловой системы с ntfsfix
Если получаете ошибку «NTFS is inconsistent», «$MFTMirr does not match $MFT» или «The disk contains an unclean file system», переходите к исправлению. Исправить повреждённый NTFS-раздел можно с помощью ntfsfix
.
Попробуйте выполнить команду:
~ $ sudo ntfsfix /dev/loop0p3
Что делает ntfsfix?
Очищает «грязный флаг» (dirty bit), который может помешать монтированию.
Исправляет основные ошибки файловой системы.
Устанавливает флаг проверки
chkdsk
, чтобы Windows могла корректно восстановить раздел при следующей загрузке.
ntfsfix
не заменяет полноценный chkdsk
в Windows, но в 80 % случаев позволяет примонтировать раздел.
Если ничего не помогло — использовать chkdsk в Windows
Если даже ntfsfix не решает проблему, лучше загрузиться в Windows и выполнить chkdsk
:
~ $ chkdsk /f /r D:
Здесь D:
— это буква повреждённого раздела, у вас она может быть другой.
Восстановление удалённых файлов c TestDisk и PhotoRec
При возникновении ситуации, когда файлы были удалены, следует перемонтировать диск в режиме только для чтения (RO). Это позволит избежать перезаписи данных. Если это системный диск, рекомендуется загрузиться с флешки и тоже примонтировать его в RO.
В данном случае диск не будет затёрт новыми данными, и восстановить удалённые данные можно с помощью TestDisk или PhotoRec. Обе утилиты бесплатны и работают с различными файловыми системами.
Восстановление файловой структуры с TestDisk
Утилиту TestDisk стоит использовать:
если раздел стал «нечитаемым», но структура файлов осталась;
если диск или флешка требуют форматирования после сбоя, но файлы ещё существуют.
Разберём пошаговые действия для восстановления файлов.
1. Установите TestDisk, если его нет:
~ $ sudo apt install testdisk # Для Debian/Ubuntu.
~ $ sudo yum install testdisk # Для CentOS.
2. Запустите TestDisk:
~ $ sudo testdisk image.img
Как теперь восстановить файлы?
Выберите диск (image.img) → Proceed.
Выберите Intel (MBR) или EFI/GPT.
Выберите Analyze, нажмите p, чтобы увидеть файлы.
Если файлы видны, выберите Write, чтобы восстановить повреждённую файловую таблицу.
Если не видны — используйте утилиту PhotoRec.
Перезагрузите систему и попробуйте снова смонтировать раздел.
Восстановление отдельных файлов с PhotoRec
Утилиту PhotoRec стоит использовать:
если файлы удалены и не видны в TestDisk;
если файловая система повреждена, а файлы нужны по сигнатурам (типам файлов).
Шаги мало чем отличаются от описанных выше.
Установите PhotoRec — она идёт в комплекте с TestDisk.
Запустите утилиту:
~ $ sudo photorec image.img
Как восстановить файлы?
Выберите диск.
Укажите, с какого раздела искать файлы.
Выберите, какие типы файлов восстанавливать (JPG, DOC, PDF).
Укажите папку для сохранения данных.
Запустите поиск.
Восстановленные файлы появятся в указанной директории.
Использование ntfs-3g при работе с NTFS
Если NTFS-раздел повреждён (например, из-за сбоя диска или неправильного отключения), стандартный драйвер NTFS в ядре Linux (ntfs) может не монтировать его вообще или смонтировать в режиме «только для чтения» с ошибками.
Однако ntfs-3g более гибкий и умеет:
принудительно монтировать «грязные» NTFS-разделы;
работать с повреждёнными MFT (Master File Table);
исправлять ошибки файловой системы с помощью ntfsfix.
Вот как установить этот драйвер и получить полноценную поддержку NTFS:
~ $ sudo apt install ntfs-3g # Debian/Ubuntu
~ $ sudo yum install ntfs-3g # CentOS
~ $ sudo pacman -S ntfs-3g # Arch
Альтернативные методы эмуляции: qemu-nbd
Если losetup не работает, можно эмулировать физический диск с помощью qemu-nbd. Это утилита, которая использует сетевые блочные устройства (NBD) для работы с образами дисков:
~ $ sudo modprobe nbd
~ $ sudo qemu-nbd --connect=/dev/nbd0 image.img
~ $ lsblk
~ $ sudo mount -o ro /dev/nbd0p3 /mnt/recovery
Отключение:
~ $ sudo qemu-nbd --disconnect /dev/nbd0
Заключение
Основные выводы:
Не работайте напрямую с повреждённым диском.
Создавайте образ прежде, чем пытаться восстанавливать данные.
Используйте losetup, TestDisk, PhotoRec для восстановления.
P. S.
Читайте также в нашем блоге: