ddを使用してバックアップしたノートブックパーティション(truecrypt)があります。これは、生のビット単位のコピー以外に他のものにバックアップすることは不可能であるためです。たとえば、次のようになります。
dd if=/dev/sda of=imagefile.img
もちろん、正常に復元することもできますが、デフォルトのbs(512)を使用すると復元時間が非常に長くなります。
BSサイズを1MBに増やすと不一致が発生しますか?マシンには8 GBのRAMがあるため、ディスクに書き込む前に1 MB、10 MB、または100 MBをメモリに読み込むことは重要ではありません。しかし、画像ファイルの終わりとファイルの終わりに達するとどうなりますか?分割。次のディスク領域のデータを上書きしようとしませんか?
最後の読み取りでイメージに512バイトしか残っていないと仮定すると、512バイト+残りの0.00048828125MBをディスクに書き込もうとしますか?
dd if=imagefile.img of=/dev/sda1 bs=1M
ありがとう
答え1
良い質問です。見てみましょう。任意のデータを作成します。
dd if=/dev/urandom of=/tmp/rand1Mx10.dat bs=1M count=10
さまざまな方法で複製してください。
$ dd if=rand1Mx10.dat of=1Mx10copy_3M.dat bs=3M status=progress
10485760 bytes (10 MB, 10 MiB) copied, 0.0196387 s, 534 MB/s
$ dd if=rand1Mx10.dat of=1Mx10copy_1M.dat bs=1M status=progress
10485760 bytes (10 MB, 10 MiB) copied, 0.0176384 s, 594 MB/s
$ dd if=rand1Mx10.dat of=1Mx10copy_nbs.dat status=progress
10485760 bytes (10 MB, 10 MiB) copied, 0.083932 s, 125 MB/s
$ dd if=rand1Mx10.dat of=1Mx10copy_333.dat bs=333 status=progress
10485760 bytes (10 MB, 10 MiB) copied, 0.0649439 s, 161 MB/s
$ dd if=rand1Mx10.dat of=1Mx10copy_pi.dat bs=314159265 status=progress
10485760 bytes (10 MB, 10 MiB) copied, 0.0103404 s, 1.0 GB/s
出て:
$ shasum /tmp/*.dat
9303b1c6a72ab0ed4c6d7f091ec9f16b8c5ecda1 /tmp/1Mx10copy_1M.dat
9303b1c6a72ab0ed4c6d7f091ec9f16b8c5ecda1 /tmp/1Mx10copy_333.dat
9303b1c6a72ab0ed4c6d7f091ec9f16b8c5ecda1 /tmp/1Mx10copy_3M.dat
9303b1c6a72ab0ed4c6d7f091ec9f16b8c5ecda1 /tmp/1Mx10copy_nbs.dat
9303b1c6a72ab0ed4c6d7f091ec9f16b8c5ecda1 /tmp/1Mx10copy_pi.dat
9303b1c6a72ab0ed4c6d7f091ec9f16b8c5ecda1 /tmp/rand1Mx10.dat
$ ls -l *.dat
-rw-rw-r-- 1 mike mike 10485760 Feb 15 09:15 1Mx10copy_1M.dat
-rw-rw-r-- 1 mike mike 10485760 Feb 15 09:16 1Mx10copy_333.dat
-rw-rw-r-- 1 mike mike 10485760 Feb 15 09:14 1Mx10copy_3M.dat
-rw-rw-r-- 1 mike mike 10485760 Feb 15 09:15 1Mx10copy_nbs.dat
-rw-rw-r-- 1 mike mike 10485760 Feb 15 09:17 1Mx10copy_pi.dat
-rw-rw-r-- 1 mike mike 10485760 Feb 15 09:11 rand1Mx10.dat
すべてが確認されました。dd
同じバイト数を報告します。ファイルサイズが一致します。ハッシュ値がキューに入ります。dd
入力ファイルが使い果たされたり、空き容量がなくなったりしたときに書き込みを中止する方法を学びます。徹底するために、もう一度小さいサイズのファイルシステムを作成します。
10MBファイルを作成します。
$ dd if=/dev/zero of=/tmp/myfs.img bs=1M count=10
ファイルシステムに切り替える:
$ mkfs.ext4 myfs.img
マウント(ルート使用)
$ sudo mount myfs.img /mnt/myfs
$ sudo chown -R $USER:$USER /mnt/myfs
スペースを見てください(メタデータ、inodeなどのため、ファイルサイズよりも小さくなります)。
$ df -h /mnt/myfs
Filesystem Size Used Avail Use% Mounted on
/dev/loop0 8.7M 92K 7.9M 2% /mnt/myfs
10MBを書きます:
$ dd if=rand1Mx10.dat of=/mnt/myfs/1Mx10copy_pi.dat bs=314159265 status=progress
dd: error writing '/mnt/myfs/1Mx10copy_pi.dat': No space left on device
0+1 records in
0+0 records out
8269824 bytes (8.3 MB, 7.9 MiB) copied, 0.205584 s, 40.2 MB/s
スペースが足りませんが、カーネルの観点からは書くところがないので、「それ以上書き込めません」。以前のファイルとは異なります(切り捨てられたため)。
$ shasum /mnt/myfs/1Mx10copy_pi.dat
2c7330b75e1fa573de4d13ce3c7cbcad8139454d /mnt/myfs/1Mx10copy_pi.dat
ただし、「デバイス全体」を複製する場合(より大きなブロックサイズに注意してください)
$ dd if=myfs.img of=myfs2.img bs=1G status=progress
0+1 records in
0+1 records out
10485760 bytes (10 MB, 10 MiB) copied, 0.0255448 s, 410 MB/s
$ sudo mkdir -p /mnt/myfs2
$ sudo mount myfs2.img /mnt/myfs2
$ shasum /mnt/myfs2/1Mx10copy_pi.dat
2c7330b75e1fa573de4d13ce3c7cbcad8139454d /mnt/myfs2/1Mx10copy_pi.dat
私たちはオリジナルを手に入れました。
答え2
最善の方法は、バックアップする前にすべてのファイルに対してMD5ハッシュを実行してから、そのMD5ハッシュを復元して確認することです。
dd if=imagefile.img of=/dev/sda1 bs=4M
16M以上を試すこともできます。時々MD5ハッシュをチェックしてください。
データの不一致は、いくつかの理由で発生する可能性があります。 BSオプション自体が問題を引き起こすと疑われます。通常、これはバックアップ中にシステムが実行する操作によって異なります。これはデータの不一致を引き起こす可能性があります。