Как восстановить зашифрованные данные на жестком диске с помощью System Rescue CD по локальной сети

528
jia103

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

У меня есть жесткий диск, на котором запущен Debian, который, по данным SMART, выходит из строя. У меня есть резервные копии, и я могу переустановить ОС на новый диск; тем не менее, мое первое предпочтение на данный момент было бы клонировать диск, и в настоящее время у меня нет другого выбора, кроме как использовать System Rescue CD 5.0.3 с загрузочного компакт-диска.

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

Если я не забуду, я установил Debian при установке Debian, чтобы настроить его как зашифрованный диск, поэтому я считаю, что / dev / sda отображается как незашифрованный загрузочный раздел, а остальное зашифровано, а затем в этом «rest» я иметь небольшой корневой раздел размером 10 ГБ внутри зашифрованной области, а остальная часть в настоящее время не используется.

Я также имею дело со старыми дисками PATA - нет доступных дисков SATA - и у компьютера есть один разъем PATA на материнской плате, к которому подключен ленточный кабель PATA с приводом CD-ROM для загрузки и почти полный сбой жесткого диска. диск, поэтому нет места для подключения любого второго диска PATA для локальной передачи.

Чтобы обойти это, у меня есть второй компьютер с тем же единственным разъемом PATA на материнской плате, к которому я подключил другой привод CD-ROM для загрузки и целевой жесткий диск.

Я загрузил оба компьютера с помощью привода CD-ROM, чтобы запустить System Rescue CD 5.0.3, и я рассматриваю свои варианты, как сделать клонируемый диск как можно лучше.

Компьютеры доступны по локальной сети, и я подключаюсь к ним обоим удаленно через SSH через терминал без графического интерфейса.

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

Я подумывал об использовании ddrescue, как описано здесь ; однако он описывает только передачу данных локально.

ОБНОВЛЕНИЕ: я смотрю, как установщик Debian настроил исходный диск. Похоже, у меня есть три раздела, и только последний зашифрован:

src # fdisk -l /dev/sda Disk /dev/sda: 37.3 GiB, 40027029504 bytes, 78177792 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x332e4146  Device Boot Start End Sectors Size Id Type /dev/sda1 * 2048 247807 245760 120M 83 Linux /dev/sda2 247808 8060927 7813120 3.7G 82 Linux swap / Solaris /dev/sda3 8060928 78176255 70115328 33.4G 83 Linux  src# cryptsetup --verbose isLuks /dev/sda1  Device /dev/sda1 is not a valid LUKS device. Command failed with code 22: Invalid argument src# cryptsetup --verbose isLuks /dev/sda2 Device /dev/sda2 is not a valid LUKS device. Command failed with code 22: Invalid argument src# cryptsetup --verbose isLuks /dev/sda3 Command successful. 

Я полагаю, что я также пытаюсь перенести данные между дисков одинаковой емкости: диск PATA 40 ГБ на другой диск PATA 40 ГБ.

Вот пункт назначения:

dest# fdisk -l /dev/sda Disk /dev/sda: 37.3 GiB, 40027029504 bytes, 78177792 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes 

ОБНОВЛЕНИЕ: я рассматриваю использование NBD, чтобы выставить разделы исходного диска через локальную сеть, чтобы использовать ddrescue от места назначения.

Вот то, что я пытался до сих пор выставлять исходный диск ...

src# nbd-server -d 8000 /dev/sda 

... и локально смонтировать на конечном компьютере:

dest# nbd-client src 8000 /mnt/nbd-sda 

К сожалению, я получаю ошибку при попытке этого; Я не могу даже смонтировать удаленное устройство:

Warning: the oldstyle protocol is no longer supported. This method now uses the newstyle protocol with a default export Error: Cannot open NBD: No such file or directory Please ensure the 'nbd' module is loaded. Exiting. 

ОБНОВЛЕНИЕ: Следующее, что я пытаюсь, это просто воссоздать разделы на целевом диске вручную.

Я начал с копирования MBR:

src# dd if=/dev/sda of=/tmp/sda-mbr.dat bs=512 count=1 dest# scp root@src:/tmp/sda-mbr.dat /tmp dest# dd if=/tmp/sda-mbr.dat of=/dev/sda dest# sync 

Прежде чем продолжить, я подумал, что это поможет, по крайней мере, сделать раздел восстановления на этот раз.

dest# fdisk /dev/sda 

Я удаляю последний раздел и оставляю себе около 15 ГБ места для последнего раздела.

Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x332e4146  Device Boot Start End Sectors Size Id Type /dev/sda1 * 2048 247807 245760 120M 83 Linux /dev/sda2 247808 8060927 7813120 3.7G 82 Linux swap / Solaris /dev/sda3 8060928 45809663 37748736 18G 83 Linux /dev/sda4 45809664 78177791 32368128 15.4G 83 Linux 

Мне нужно создать тот же зашифрованный раздел в месте назначения, что и / dev / sda3 в источнике; Я мог бы сделать то же самое для этого раздела восстановления:

dest# cryptsetup luksFormat /dev/sda3 --verify-passphrase dest# cryptsetup luksFormat /dev/sda4 --verify-passphrase 

Затем откройте зашифрованный раздел восстановления:

dest# cryptsetup open /dev/sda4 sda4-opened dest# mkdir /mnt/sda4-open dest# mke2fs -j /dev/mapper/sda4-opened dest# mount /dev/mapper/sda4-opened /mnt/sda4-open 

По крайней мере, теперь я могу смонтировать этот раздел восстановления удаленно и перенести данные на лучший диск.

Сначала я открыл зашифрованный раздел на исходном диске:

src# cryptsetup open /dev/sda3 sda3-opened src# mkdir /mnt/sda3-open src# mount /dev/mapper/sda3-opened /mnt/sda3-open 

Теперь, с помощью df, я вижу, что здесь используется только 12 ГБ дискового пространства.

Давайте размонтируем, но сохраним это на карте:

src# umount /mnt/sda3-open src# rmdir /mnt/sda3-open 

Теперь я хотел смонтировать раздел восстановления на исходном диске:

src# mkdir /mnt/dest-sda4 src# sshfs root@dest:/mnt/sda4-open /mnt/dest-sda4 

С этим смонтированным я мог теперь запустить ddrescue:

src# ddrescue -f -n /dev/sda1 /mnt/dest-sda4/sda1.ddrescue.img /mnt/dest-sda4/sda1.ddrescue.log 

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

Я сейчас пытаюсь использовать fsarchiver :

src# fsarchiver savefs /mnt/dest-sda4/sda1.fsarchiver.img.fsa /dev/sda1 Statistics for filesystem 0 * files successfully processed:....regfiles=314, directories=6, symlinks=0, hardlinks=0, specials=0 * files with errors:...............regfiles=0, directories=0, symlinks=0, hardlinks=0, specials=0 

Монтирование / dev / sda1 и запуск df показывают, что он использует только 33 МБ, а файл .fsa - только 24 МБ, поэтому, возможно, он сжат. Это лучше, чем оригинальные 120 МБ.

Теперь давайте попробуем с корневым разделом sda3 посмотреть, как это происходит:

src# fsarchiver savefs /mnt/dest-sda4/sda3.fsarchiver.img.fsa /dev/mapper/sda3-opened 

Это, вероятно, займет некоторое время, поэтому я сейчас сохраняю это обновление.

ОБНОВЛЕНИЕ: Это пошло быстрее, чем я ожидал. Вот что я получил в итоге:

dest# ls -lh total 7.7G drwx------ 2 root root 16K Apr 8 01:49 lost+found -rw-r--r-- 1 root root 24M Apr 8 02:04 sda1.fsarchiver.img.fsa -rw-r--r-- 1 root root 7.7G Apr 8 02:43 sda3.fsarchiver.img.fsa 

Вот еще более интересная часть, рассматривающая вывод команды выше:

src# fsarchiver savefs /mnt/dest-sda4/sda3.fsarchiver.img.fsa /dev/mapper/sda3-opened Statistics for filesystem 0 * files successfully processed:....regfiles=149025, directories=84796, symlinks=20559, hardlinks=127551, specials=1269 * files with errors:...............regfiles=0, directories=0, symlinks=0, hardlinks=0, specials=0 

Если я читаю это правильно, это обнадеживает, потому что у него не было никаких проблем с чтением данных с исходного диска.

Давайте очистим некоторые:

src# umount /mnt/dest-sda4 src# rmdir /mnt/dest-sda4 

Далее я восстанавливаю заархивированные файлы обратно в / dev / sda1 и / dev / sda3 места назначения, но сначала давайте посмотрим, что у нас есть на диске назначения, потому что я забыл, где я остановился, настраивая его.

Во-первых, есть ли какая-нибудь файловая система в / dev / sda1?

dest# mkdir /mnt/sda1 dest# mount /dev/sda1 /mnt/sda1 NTFS signature is missing. Failed to mount '/dev/sda1': Invalid argument The device '/dev/sda1' doesn't seem to have a valid NTFS. Maybe the wrong device is used? Or the whole disk instead of a partition (e.g. /dev/sda, not /dev/sda1)? Or the other way around? 

Хорошо. Я не ожидал файловой системы, но не ожидал сообщения NTFS. Так что там ничего нет.

Давайте восстановим первый образ раздела:

dest# fsarchiver restfs /mnt/sda4-open/sda1.fsarchiver.img.fsa id=0,dest=/dev/sda1 Statistics for filesystem 0 * files successfully processed:....regfiles=314, directories=6, symlinks=0, hardlinks=0, specials=0 * files with errors:...............regfiles=0, directories=0, symlinks=0, hardlinks=0, specials=0 

Смонтируем сейчас:

dest# mount /dev/sda1 /mnt/sda1 dest# ls -l /mnt/sda1 ... dest$ df -h | grep sda1 ... 

Пока все выглядит хорошо.

Давайте сделаем корневой раздел сейчас.

dest# cryptsetup open /dev/sda3 sda3-opened dest# mkdir /mnt/sda3-open dest# mount /dev/mapper/sda3-opened /mnt/sda3-open NTFS signature is missing. Failed to mount '/dev/mapper/sda3-opened': Invalid argument The device '/dev/mapper/sda3-opened' doesn't seem to have a valid NTFS. Maybe the wrong device is used? Or the whole disk instead of a partition (e.g. /dev/sda, not /dev/sda1)? Or the other way around? 

Так же, как и раньше - там ничего нет.

Давайте восстановим образ раздела:

dest# fsarchiver restfs /mnt/sda4-open/sda3.fsarchiver.img.fsa id=0,dest=/dev/mapper/sda3-opened Statistics for filesystem 0 * files successfully processed:....regfiles=149025, directories=84796, symlinks=20559, hardlinks=127551, specials=1269 * files with errors:...............regfiles=0, directories=0, symlinks=0, hardlinks=0, specials=0 

Смонтируем сейчас:

dest# mount /dev/mapper/sda3-opened /mnt/sda3-open dest# ls -l /mnt/sda3 ... dest$ df -h | grep sda3 ... 

Пока все выглядит хорошо.

Я запустил следующее на обоих:

# fsarchiver probe simple 

Вещи выглядят как ожидалось.

Я верю, что мне все еще не хватает того, что я думаю, что это испортит Grub. Кажется, я кое-что вспомнил о начальной загрузке Stage 1 из MBR, но затем он не смог найти Stage 2 в разделе / ​​boot, когда я пытался сделать что-то подобное в прошлый раз.

Эта страница привела к этому, который описывает, как восстановить Grub:

dest# mount -o bind /proc /mnt/sda3-open/proc dest# mount -o bind /dev /mnt/sda3-open/dev dest# mount -o bind /sys /mnt/sda3-open/sys dest# chroot /mnt/sda3-open /bin/bash (dest) chroot# mount /dev/sda1 /boot/ (dest) chroot# grub-install /dev/sda  Installing for i386-pc platform. Installation finished. No error reported.  (dest) chroot# umount /boot (dest) chroot# exit dest# umount /mnt/sda3-open/ 

Когда я перезагружаюсь, это должно работать, и привод должен загружаться правильно; однако сейчас уже поздно, и я пока не хочу вдаваться в подробности.

Также я еще не уверен, что у этого будет счастливый конец. Приведенная выше команда grub-install указала, что она устанавливается для i386, но я считаю, что мне нужна 64-битная версия.

Возможно, мне придется повторить эту часть, перезагрузив System Rescue CD через rescue64. Я не уверен, что при загрузке по умолчанию запускается 32-разрядная версия.

Опять же, завтра я собираюсь разобраться с остальными.

ОБНОВЛЕНИЕ: Итак, хорошая новость заключается в том, что загрузка по умолчанию для System Rescue CD была rescue64, так что это не было бы проблемой.

Оказывается, я полностью забыл о LVM, и UUID диска, очевидно, не совпадают.

... cryptsetup: lvm is not available cryptsetup: lvm is not available cryptsetup: lvm is not available cryptsetup: lvm is not available ALERT! /dev/disk/by-uuid/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx does not exist. Check cryptopts=source= bootarg: cat /proc/cmdline or missing modules, devices: cat /proc/modules; ls /dev -r Dropping to a shell. Will skip /dev/disk/by-uuid/xxxxxxxx-xxxx-xxxx-xxxx-xxxx xxxxxxxx if you can't fix. modprobe: module ehci-orion not found in modules.dep   BusyBox vx.xx.x (Debian x:x.xx.x-x+xxxxxx) built-in shell (ash) Enter 'help for a list of built-in commands.  /bin/sh: can't access tty: job control turned off (initramfs) 

Я полагаю, я мог бы бороться с этим, но я не буду беспокоиться. Вместо этого я собираюсь попробовать то, что предложил dirkt, и клонировать полные / dev / sda - UUID и все такое - поскольку 40 ГБ - это всего четыре раза по 10 ГБ, которые я перенес прошлой ночью и не занял слишком много времени. LAN.

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

Итак, вернемся к началу: оба компьютера теперь загрузились с загрузочного компакт-диска System Rescue CD, оба доступны по сети через соответствующие IP-адреса, назначенные DHCP, и у обоих установлен корневой пароль с помощью passwdкоманды.

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

src# dd if=/dev/zero of=/root/tempsrc.dat bs=1M count=128 ... src# fdisk -l /root/tempsrc.dat Disk /root/tempsrc.dat: 128 MiB, 134217728 bytes, 262144 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x8b8647e7  Device Boot Start End Sectors Size Id Type /root/tempsrc.dat1 * 2048 34815 32768 16M 83 Linux /root/tempsrc.dat2 34816 100351 65536 32M 82 Linux swap / Solaris /root/tempsrc.dat3 100352 262143 161792 79M 83 Linux  src# mkdir /mnt/tempsrc src# mkdir /mnt/tempsrc-mounted src# losetup /dev/loop1 /root/tempsrc.dat -o $(expr 2048 \* 512) src# mke2fs /dev/loop1 src# mount /dev/loop1 /mnt/tempsrc-mounted src# echo 'This is partition 1' > /mnt/tempsrc-mounted/note1.txt src# umount /mnt/tempsrc-mounted src# losetup -d /dev/loop1 src# losetup /dev/loop1 /root/tempsrc.dat -o $(expr 100352 \* 512) src# cryptsetup luksFormat /dev/loop1 --verify-passphrase src# cryptsetup open /dev/loop1 loop1-opened src# mke2fs -j /dev/mapper/loop1-opened src# mount /dev/mapper/loop1-opened /mnt/tempsrc-mounted src# echo 'This is partition 3' > /mnt/tempsrc-mounted/note3.txt src# umount /mnt/tempsrc-mounted src# cryptsetup close loop1-opened src# losetup -d /dev/loop1 src# rmdir /mnt/tempsrc-mounted src# rmdir /mnt/tempsrc 

Я знаю. Я больше не имел дела с LVM. Ну что ж.

Теперь у меня есть /root/tempsrc.dat, который содержит образ диска, такой как образ SD-карты, который я хочу перенести в удаленный пункт назначения. На первом разделе находится файл с именем note1.txt, а третий раздел зашифрован и имеет note3.txtразличное содержимое. Я хотел бы убедиться, что смогу добраться до всего этого после запуска fsarchiverи переноса.

Давайте подготовим что-нибудь в пункте назначения:

dest# dd if=/dev/zero of=/root/tempdest.dat bs=1M count=128 dest# fdisk -l /root/tempdest.dat Disk /root/tempdest.dat: 128 MiB, 134217728 bytes, 262144 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes 

Давайте также создадим петлевые устройства для них:

src# losetup /dev/loop1 /root/tempsrc.dat dest# losetup /dev/loop2 /root/tempdest.dat 

Теперь, когда я собирался выполнить передачу, я обнаружил, что fsarchiver не может справиться с этим, как указано здесь и здесь .

Я надеялся сделать что-то вроде следующего:

src# fsarchiver savefs /tmp/fifo1 /dev/loop1 dest# fsarchiver restfs /tmp/fifo2 id=0,dest=/dev/loop2 

ОБНОВЛЕНИЕ: я заменил целевой 40 ГБ диск на временный третий диск и включил ПК назначения.

Давайте начнем с настройки этого нового диска:

dest# mkdir /mnt/sda-open dest# mount /dev/sda1 /mnt/sda-open 

Попытка перенести снова, за исключением этого времени, работающего на всю / dev / sda сразу:

src# mkdir /mnt/dest-sda src# sshfs root@dest:/mnt/sda-open /mnt/dest-sda src# fsarchiver savefs /mnt/dest-sda/src-sda.fsarchiver.img.fsa /dev/sda filesys.c#317,generic_mount(): partition [/dev/sda] cannot be mounted on [/tmp/fsa/20180408-222928-xxxxxxxx-00] as [vfat] with options [] oper_save.c#1032,filesystem_mount_partition(): cannot mount partition [/dev/sda]: filesystem may not be supported by either fsarchiver or the kernel. removed /mnt/dest-sda/src-sda.fsarchiver.img.fsa 

Ну, так много за эту идею. Я предполагаю, что они называют это "FS" архиватором по причине. Давайте попробуем пристрастие.

src# partimage --compress=1 save /dev/sda /mnt/dest-sda/src-sda.partimg.bz2 

Это тоже не сработало; по-видимому, это касается файловых систем, а не дисков в целом.

Поскольку мы работаем с диском в целом, давайте посмотрим, сработает ли сейчас ddrescue.

src# ddrescue --no-scrape /dev/sda /mnt/dest-sda/src-sda.ddrescue.img /mnt/dest-sda/src-sda.ddrescue.img.log GNU ddrescue 1.21 Press Ctrl-C to interrupt ipos: 785580 kB, non-trimmed: 0 B, current rate: 12320 kB/s opos: 785580 kB, non-scraped: 0 B, average rate: 10615 kB/s non-tried: 39241 MB, errsize: 0 B, run time: 1m 14s rescued: 785580 kB, errors: 0, remaining time: 1h percent rescued: 1.96% time since last successful read: 0s Copying non-tried blocks... Pass 1 (forwards) 

Я начал это в 5:41 вечера для 40 ГБ диска, я думаю, что 100 Мбит / с LAN. На данный момент выходной утверждает, что это будет сделано примерно через час.

1
По какой-то причине вы не могли просто клонировать весь диск вместо того, чтобы смотреть на MBR, разделы и т. Д.? Кстати, вы также можете ответить на свои вопросы и принять ответ. dirkt 6 лет назад 0
Я еще не достиг удовлетворительного ответа; это всего лишь заметки о том, что я пробовал до сих пор, и ничего более. После сна я думаю сделать это сейчас - клонировать весь диск. Меня беспокоило время, необходимое для передачи неиспользуемых 40 ГБ по локальной сети, когда у меня используется менее 10 ГБ, которые необходимо передать; однако, поскольку перенос 10 ГБ занял совсем немного времени, думаю, я попробую восстановить полный диск. jia103 6 лет назад 0

1 ответ на вопрос

0
jia103

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

Новый диск теперь является клоном оригинального диска и приятно гудит.

Чтобы клонировать мой оригинальный привод с представленными ограничениями - в частности, требуя перебрать локальную сеть с компакт-диском System Rescue без Clonezilla - я смог пройти через это следующим образом.

Во-первых, у меня был временный жесткий диск на 160 ГБ, подключенный к запасному ПК, как описано выше, и я загрузил оба компьютера с моего загрузочного компакт-диска System Rescue CD.

Со своего srcкомпьютера я установил жесткий диск объемом 160 ГБ на destПК, используя локальный компьютер, sshfsа затем запустил его, ddrescueкак описано выше, чтобы записать неисправный жесткий диск на жесткий диск объемом 160 ГБ в виде файла образа. Этот диск объемом 40 ГБ был преобразован в файл образа объемом 40 ГБ, и мне потребовалось около часа, чтобы завершить работу в моей сети со скоростью 100 Мбит / с.

Я собираюсь сохранить это изображение, чтобы мне не пришлось делать это снова; начиная с этого момента, инкрементных резервных копий данных должно быть достаточно для восстановления после того, как этот исходный образ был захвачен.

После того, как эта фаза была завершена, мне пришлось заменить неисправный диск на 40 ГБ на заменяющий диск, который, как оказалось, имеет такую ​​же емкость 40 ГБ на srcхосте, не касаясь и даже не отключая питание dest.

Затем я srcснова включил питание с загрузочного компакт-диска System Rescue, снова подключил destкаталог sshfsи на этот раз восстановил его из образа:

dest# ddrescue --force --no-scrape /mnt/dest-sda/src-sda.ddrescue.img /dev/sda /mnt/dest-sda/src-restore-sda.ddresue.img_2018-04-08.log 

Это заняло около часа, чтобы завершить.

Поскольку это был образ полного диска, а не разделов, я смог просто извлечь компакт-диск и перезагрузиться src, и все было так, как было.

Похожие вопросы