LAN上のSystem Rescue CDで暗号化されたハードドライブデータを回復する方法


1

既存のドライブを使用している場合と同様に、クローンドライブをPCに挿入してシームレスに起動できるようにするには、ハードドライブのクローン作成を進めるための最善の方法は何でしょうか。

私はDebianを実行しているハードドライブを持っていますが、SMARTのデータによると失敗しているようです。バックアップはありますが、OSを新しいドライブに再インストールすることもできます。しかし、現時点での私の最初の好みはドライブのクローンを作成することであろう、そして私は現在ブータブルCDからSystem Rescue CD 5.0.3を使うこと以外に選択肢はない。

ドライブにはそれほど多くはありません - おそらく10 GB未満の使用済みスペースで、非常に少ないデータしかありません。そのため、これほど時間がかかるとは思っていないので、時間にはあまり関心がありません。

思い出せば、私はDebianをインストールするときに暗号化ドライブとして設定するためのオプションを試したので、/ dev / sdaは暗号化されていないブートパーティションとして表示され、残りは暗号化される暗号化領域内に10 GBの小さなルートパーティションがあり、残りは現在未使用です。

私はまた古いPATAドライブを扱っています - 利用可能なSATAドライブはありません - そしてコンピュータはPATAリボンケーブルが起動のためにCD-ROMドライブと接続されている近いマザーボード上に一つのPATAコネクタがありますローカルドライブのために2台目のPATAドライブを接続する余地はありません。

これを回避するために、私はブート用の別のCD-ROMドライブとインストール先のハードドライブをマザーボードに同じ単一のPATAコネクタを持つ2台目のコンピュータを持っています。

私はSystem Rescue CD 5.0.3を立ち上げるためにCD-ROMドライブを介して両方のコンピュータをブートしました、そして私は故障したドライブをできるだけクローンにする私の選択肢を検討しています。

コンピュータはLAN経由で利用可能であり、私はグラフィカルインタフェースのない端末を介してSSH経由で両方ともリモートで接続しています。

転送元ドライブと転送先ドライブのサイズがあまりよくわかりません。コピー元のドライブがコピー先のドライブよりも容量が大きい可能性があるため、理想的には、空のドライブ全体を使用するのではなく、使用済みの容量だけを転送したいと思います。

説明したようにddrescueを使用することを検討していました ここに ;ただし、データのローカル転送についてのみ説明しています。

更新: 私はDebianインストーラがどのようにソースドライブを設定するのかを調べています。 3つのパーティションがあり、最後のパーティションだけが暗号化されているようです。

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.

私は、同じ容量のドライブ間でも転送しようとしていると思います。40GBのPATAドライブから別の40 GBのPATAドライブです。

目的地は次のとおりです。

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

更新: 宛先からddrescueを使用するために、NBDを使用してLAN経由でソースドライブのパーティションを公開することを検討しています。

これが私がこれまでにソースドライブを公開するために試みたものです...

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 GBのスペースを確保します。

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 GBのディスク容量だけです。

アンマウントしましょう。

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 M​​Bしか使用していないことがわかります。また、.fsaファイルは24 MBしかないため、圧縮されている可能性があります。元の120 MBよりも優れています。

それでは、ルートパーティション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?

OK。私はファイルシステムを期待していませんでしたが、私は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

物事は予想通りに見えます。

私はまだ足りないと思うことの1つは、これがGrubを台無しにすると思うことです。私は、ステージ1がMBRから正常に起動したことを思い出したようですが、前回このようなことをしようとしたときに/ bootパーティションにステージ2が見つかりませんでした。

このページ につながった この 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/{sys,dev,proc}

再起動すると、これは機能し、ドライブは正しく起動するはずです。しかし、それは今遅くなっており、私はまだそれに入りたくないです。

また、私はまだこれがハッピーエンドになるだろうと確信していません。上記のgrub-installコマンドはi386用にインストールしていると述べていますが、64ビットが欲しいと思います。

私はrescue64でSystem Rescue CDを再起動することによってこの部分をやり直さなければならないかもしれません。デフォルトの起動で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とすべて - をクローン化するつもりです。 LAN

私はNBDを動かすことができなかったので私は昨夜これをすることができなかったので、私は画像ファイルに保存することに頼りました。完全なディスククローンを作成しているのであればそれはできません。そのため、パイプまたは名前付きパイプのほうがうまく機能するかどうかを確認しましょう。

そのため、最初に戻ると、両方のコンピュータはSystem Rescue CDのブータブルCDから起動し、それぞれのDHCP割り当てIPアドレスを介してネットワーク経由で利用可能になりました。 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を扱わなかった。しかたがない。

SDカードイメージのようなディスクのイメージを含む/root/tempsrc.datがあり、それをリモートの転送先に転送します。最初のパーティションにはというファイルがあります。 note1.txt3番目のパーティションは暗号化されており、 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 GBドライブを一時的な3台目のドライブに交換し、転送先PCの電源を入れました。

この新しいドライブを設定することから始めましょう:

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」アーカイバと呼ぶ理由があると思います。 partimageを試してみましょう。

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 GB以上のドライブでは100 MbpsのLANだと思います。現時点では、出力はそれが約1時間で行われると主張している。


MBRやパーティションなどを見るのではなく、ドライブ全体のクローンを作成できないのはなぜですか。ところで、あなたはまたあなた自身の質問に答え、そしてその答えを受け入れることができます。
dirkt

私はまだ満足のいく答えには達していません。これらは私がこれまでに試してきたことに関する単なるメモであり、それ以上のものではありません。眠りについた後、私は今それをすることを考えています - ドライブ全体を複製します。私が心配していたのは、未使用の40 GBをLAN経由で転送するときに転送に必要な時間が10 GB未満だった場合です。ただし、10 GBの転送にはそれほど時間がかからなかったので、フルドライブをやり直すために一撃するつもりです。
jia103

回答:


0

さて、私は仲介者のドライブで正しい方向に進んでいたようです。これは私が本来意図したことではありませんが、それは私が私の問題を乗り越えるのを助けました。

新しいドライブは今オリジナルのドライブのクローンであり、うまくハミングしています。

私のオリジナルのドライブを提示された制限でクローン化するために - 特にClonezillaなしでSystem Rescue CDでLANを通過することを必要とする - 私は以下のようにこれを通過することができた。

まず、上記のように一時的な160 GBハードドライブを予備のPCに接続し、両方のコンピュータを起動可能なSystem Rescue CDディスクで起動しました。

私から src PC、私は160 GBのハードドライブを dest ローカルで使用しているPC sshfs そして走った ddrescue イメージファイルとして160 GBハードドライブに障害のあるハードドライブをイメージ化するには、前述のとおり。この40 GBのドライブは40 GBのイメージファイルにイメージ化されており、100 MbpsのLAN上で完了するまでに約1時間かかりました。

私はこのイメージを維持するつもりですので、私は再びこれをする必要はありません。これ以降、データの増分バックアップは、この最初のイメージがキャプチャされた後に復元するのに十分なはずです。

このフェーズが完了したら、故障した40 GBドライブを交換用ドライブと交換してもらいました。 src 触れずに電源を切らずにホスト dest

その後、電源を入れました src System Rescue CDを起動した状態で 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

これが完了するまでにさらに1時間かかりました。

これはパーティションではなくドライブ全体のイメージだったので、CDを取り出して再起動することができました。 srcそして、すべてがそのままでした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.