Полная резервная копия и восстановление диска с помощью команды dd
Команда dd - это мощная утилита Linux для создания точных побитовых копий дисков, разделов или файлов. Это руководство охватывает, как безопасно создавать полные резервные копии дисков и восстанавливать их при необходимости.
⚠️ Важное предупреждение о безопасности
dd опасна! Одна опечатка может навсегда уничтожить ваши данные. Всегда:
- Перепроверяйте входное (
if=) и выходное (of=) устройства - Убедитесь, что делаете резервную копию правильного диска
- Никогда не запускайте dd на смонтированной файловой системе
- Храните резервные копии на отдельном физическом диске
- Тестируйте резервные копии до того, как они понадобятся
Команду dd не зря называют «disk destroyer» (разрушитель дисков) — используйте её осторожно!
Предварительные требования
- Root или sudo доступ
- Достаточное дисковое пространство для резервной копии (как минимум равное размеру исходного диска)
- Внешний диск или сетевое хранилище для размещения резервной копии
- Базовое понимание именования дисков в Linux (/dev/sda, /dev/sdb и т.д.)
Поиск дисков
Список всех дисков
1 | # Список всех дисков и разделов |
Понимание имён дисков:
/dev/sda- Первый SATA/SCSI диск (весь диск)/dev/sda1- Первый раздел на первом диске/dev/nvme0n1- Первый NVMe SSD/dev/mmcblk0- SD карта/dev/sdb- Второй диск (обычно внешний USB)
Важно: Делайте резервную копию всего диска (например, /dev/sda), а не только раздела (например, /dev/sda1). Это гарантирует включение загрузчика и таблицы разделов.
Определение исходного диска
1 | # Проверка смонтированных дисков |
Создание резервной копии диска
Базовая резервная копия диска в образ
Создание полного образа диска:
1 | # Резервная копия всего диска в файл образа |
Объяснение параметров:
if=/dev/sda- Входной файл (исходный диск для резервной копии)of=full_disk_backup.img- Выходной файл (образ резервной копии)bs=4M- Размер блока 4 мегабайта (быстрее, чем по умолчанию)status=progress- Показывает прогресс во время копирования
Пример с реальными путями:
1 | # Резервная копия на внешний USB диск |
Прямая резервная копия диск-в-диск
Клонирование одного диска напрямую на другой (быстрее, без промежуточного файла):
1 | # Копирование диска /dev/sda на диск /dev/sdb |
Предупреждение: Это полностью сотрёт /dev/sdb! Трижды проверьте имена устройств!
Сжатая резервная копия (экономит место)
Сжатие резервной копии на лету с использованием gzip или pigz:
1 | # Сжатие с gzip (медленнее, лучше сжатие) |
Сравнение сжатия:
- Без сжатия: Быстрее всего, но огромный файл (размер всего диска)
- gzip -9: Медленнее всего, самый маленький файл (~30-50% уменьшение)
- pigz -1: Хороший баланс скорости и размера
Резервная копия только используемого пространства (с dd_rescue)
Для больших дисков с малым количеством данных используйте ddrescue для пропуска пустых блоков:
1 | # Установка ddrescue |
Оптимизация производительности dd
Выбор размера блока
Размер блока значительно влияет на скорость:
1 | # Слишком маленький (медленно) |
Рекомендация: Используйте bs=4M в большинстве случаев, bs=8M или bs=16M для очень больших дисков.
Мониторинг прогресса
Если вы забыли status=progress, мониторьте dd в другом терминале:
1 | # Найти ID процесса dd |
Тест скорости
Бенчмарк вашего диска перед созданием резервной копии:
1 | # Тест скорости записи (создаёт тестовый файл 1GB) |
Восстановление из резервной копии
Восстановление образа на диск
1 | # Восстановление несжатого образа |
Критически важные напоминания:
/dev/sdbбудет полностью перезаписан- Сначала размонтируйте целевой диск
- Для загрузочных дисков подключайте только ОДИН загрузочный диск за раз
- Проверьте имена устройств с помощью
lsblkперед запуском
Восстановление конкретного раздела
Для восстановления только одного раздела:
1 | # Резервная копия одного раздела |
Проверка
Всегда проверяйте ваши резервные копии!
Сравнение резервной копии с оригиналом
1 | # Вычисление контрольных сумм |
Монтирование и тестирование резервной копии
1 | # Создание loop устройства из резервной копии |
Лучшие практики безопасности
Перед созданием резервной копии
1 | # 1. Размонтируйте источник, если возможно |
Перед восстановлением резервной копии
1 | # 1. Список всех дисков для подтверждения целевого |
Типичные случаи использования
Резервная копия перед обновлением системы
1 | # Резервная копия загрузочного диска перед важным обновлением |
Клонирование диска на больший диск
1 | # 1. Клонирование на больший диск |
Резервная копия SD карты (Raspberry Pi)
1 | # Найти устройство SD карты (обычно /dev/mmcblk0 или /dev/sdb) |
Создание загрузочного USB из ISO
1 | # Копирование ISO на USB диск |
Устранение неполадок
«No space left on device»
Проблема: На целевом диске недостаточно места.
Решение:
1 | # Проверка доступного места |
«Device is busy»
Проблема: Диск смонтирован или используется.
Решение:
1 | # Проверка, что использует устройство |
«Operation not permitted»
Проблема: Недостаточно прав доступа.
Решение:
1 | # Запуск с sudo |
dd зависла
Проблема: Прогресс не виден.
Решение:
1 | # Проверка, работает ли dd на самом деле |
Слишком большой файл резервной копии
Проблема: Файл образа огромный.
Решение:
1 | # Использование сжатия |
Альтернативные инструменты
Хотя dd мощная, рассмотрите эти альтернативы для конкретных нужд:
Для системных резервных копий:
rsync- Инкрементные резервные копии, быстрее, чем dd только для используемого пространстваtar- Архивирование конкретных директорийClonezilla- GUI инструмент, интеллектуальное клонированиеtimeshift- Снимки системы (как macOS Time Machine)
Для клонирования дисков:
ddrescue- Восстанавливает данные с отказывающих дисковpartclone- Копирует только используемые блоки (меньшие резервные копии)fsarchiver- Резервная копия на уровне файловой системы
Для создания образов дисков:
partimage- Создаёт образы разделовg4u- Ghost for Unixredo rescue- Live CD для резервных копий
Краткая справка
1 | # Базовая резервная копия |