Вопрос или проблема
Мы хотим скопировать содержимое одного диска на другой, но с усложнением: на исходном диске данные находятся в разделе, зашифрованном с помощью LUKS, а на целевом диске LUKS использоваться не будет.
Обычно мы бы использовали “dd” для копирования содержимого диска, но будет ли dd читать зашифрованные или расшифрованные данные с исходного диска? Если он “увидит” зашифрованные данные и скопирует их на целевой диск, то это не сработает, потому что на целевом диске LUKS использоваться не будет. Думаю, в таком случае нам придется использовать инструмент более высокого уровня, например, rsync, для копирования данных.
Чтобы объяснить подробнее, наш исходный диск — sdb, который имеет раздел sdb2, зашифрованный с помощью LUKS и представлен как /dev/mapper/bricks. Поверх /dev/mapper/bricks была создана файловая система XFS. Заранее спасибо.
Если вы использовали cryptsetup
, чтобы смонтировать LUKS-зашифрованный /dev/sdb2
на /dev/mapper/bricks
, тогда вы можете просто использовать
dd if=/dev/mapper/bricks of=<target partition>
для копирования незашифрованных данных на целевой раздел.
Ответ или решение
Теория
При копировании данных с одного диска на другой, важно учитывать, в каком виде данные хранятся на исходном диске. В вашем случае, исходный диск имеет LUKS-зашифрованный раздел, что добавляет некоторую сложность, так как дублирование данных в зашифрованном виде с помощью dd
приведет к следующей проблеме: на целевом диске получится набор зашифрованных данных, которые без LUKS невозможно будет прочитать. В связи с этим, ключевой задачей является извлечение данных в незашифрованном виде перед копированием на новый диск.
Пример
В вашем случае, зашифрованный раздел /dev/sdb2
, после расшифровки посредством cryptsetup
, монтируется как /dev/mapper/bricks
. На этом маппере создана файловая система XFS, которая содержит все необходимые данные. Чтобы эффективным образом скопировать данные на новый диск, необходимо использовать dd
не на самом зашифрованном разделе, а именно на расшифрованной его версии.
Пример команды:
dd if=/dev/mapper/bricks of=<целевая_раздел>
Здесь if
(input file) указывает на источник, с которого происходит чтение данных. Это расшифрованная версия вашей файловой системы, доступная как /dev/mapper/bricks
. of
(output file) указывает на целевой раздел, куда будут скопированы данные. Эта команда копирует данные в незашифрованном виде, сохраняя их целостность.
Применение
Важно проверить несколько этапов перед тем, как начинать процесс копирования:
-
Подготовка целевого диска: Убедитесь, что целевой диск разбит на разделы и имеет файловую систему. Можно использовать инструменты вроде
fdisk
,gdisk
для разметки иmkfs
для создания файловой системы на разделах. -
Мониторинг процесса: Команда
dd
не предоставляет оперативной информации о процессе копирования. Для удобства за ним стоит следить с помощью командыpv
или ключаstatus=progress
вdd
, чтобы понимать, как идет процесс:dd if=/dev/mapper/bricks of=<целевая_раздел> status=progress
-
Контроль завершения: После окончания процесса рекомендуется проверить целевой диск на ошибки. Это можно сделать с использованием утилиты, например
fsck
для проверки целостности файловой системы, в нашем случае XFS. -
Права и доступ: После копирования, проверьте, чтобы все разрешения и владельцы файлов были корректными. Это можно сделать через
chown
иchmod
, при необходимости, или использоватьrsync
с параметрами, которые сохраняют метаданные файлов. -
Тестирование доступности данных: Перед тем как начать использовать новый диск в полноценной работе, рекомендуется провести тестирование доступности всех данных. Это можно сделать вручную, открыв несколько файлов или скриптом, который автоматически проверит заданные папки и файлы.
Использование dd
предоставляет низкоуровневый доступ к данным, обходя большинство мета- и файловых данных. Однако, в случае необходимости копирования конкретных данных или сохранения структуры файлов, можно рассмотреть использование rsync
. Этот инструмент позволяет более гибко управлять процессом копирования, сохраняя права доступа, символические ссылки и другие важные атрибуты файлов.
Копирование данных с зашифрованного LUKS-раздела с этой методикой обеспечит надлежащую миграцию данных без потери информации и с соблюдением всех системных норм и требований.