ディスク全体を大きなディスクに複製してからマウント解除するには?

ディスク全体を大きなディスクに複製してからマウント解除するには?

私がしたことは、3つのパーティションを持つ小さな32GBフラッシュモジュールを複製することでした。偶然32GBのUSBがあったと思いました。可能それはうまくいきませんでした。東芝の32GBはSandiskの32GBと少し違うようです。

とにかく2TBの外付けドライブを使用し、同じことをしました。具体的には以下を行った。

dd if=/dev/sdX of=/dev/sdY bs=100M

横に最後のブロックは部分コピーとして表示されますか、またはEOFに最初に到達すると削除されますか?

したがって、本質的にフラッシュモジュール全体(パーティションテーブルなど)を複製します。 32GB - > 2TBは、最後のdd(3番目の)パーティションの終わりを読み取った後にユーティリティが正しく停止するため、簡単です。

今やるべきことは、Flashイメージ全体を含む単純なバイナリブロブを作成することだけです。今私の2TBドライブに元のドライブと同じパーティションがありますsdx1, sdx2, sdx3。だからもう一度、dd次のことを行います。

dd if=/dev/sdx of=firmware.bin bs=100M

これにより、私は最初に興味のある32GBをコピーするだけでなく、2TBドライブ全体を複製し続けます。私が試したときもそうでした。以下を使用して、目的のパーティションの正確なバイト長を見つけることができます。

$ lsblk -b
NAME                         MAJ:MIN RM          SIZE RO TYPE  MOUNTPOINT
sdc                            8:32   0 2000398933504  0 disk  
├─sdc1                         8:33   0     134217728  0 part  
├─sdc2                         8:34   0    2147483648  0 part  
└─sdc3                         8:35   0   29734297600  0 part  

この問題を解決する明確な方法は、ブロックサイズをdd1バイトに設定し、読み取るブロック数を上記の3つのサイズの合計に設定することです。

dd if=/dev/sdc of=firmware.bin bs=1 count=32015998976

しかし、これが実際にどれくらいかかるかは想像できません。

編集する:上記の興味深いクイックテストでは、約150KB / sの堅牢な伝送速度を示しました。


長すぎます。パーティションサイズの合計よりはるかに大きいディスクの最初の3つのパーティションを単独でコピーする方法は?

答え1

必要なパーティションとMBRをコピーするだけです(必要な場合)。

MBRはディスクの最初の512バイトに保存されます。

dd if=/dev/sdX of=/path/to/mbr_file.img bs=512 count=1

各パーティションをコピー

dd if=/dev/sdX1 of=/path/to/partition1.img bs=512

dd if=/dev/sdX2 of=/path/to/partition2.img bs=512

dd if=/dev/sdX3 of=/path/to/partition3.img bs=512

関連情報