DDを使用してリムーバブルデバイスの半分(一部)のみをコピーする

DDを使用してリムーバブルデバイスの半分(一部)のみをコピーする

私は一度32GB SDカードこの構造を使用する(または非常に似ている):

luis@Fresoncio:~$ sudo fdisk -l
Disk /dev/mmcblk0: 29.2 GiB, 31393316864 bytes, 61315072 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: 0xec4e4f57

Device         Boot    Start      End  Sectors  Size Id Type
/dev/mmcblk0p1             1   125000   125000   61M  c W95 FAT32 (LBA)
/dev/mmcblk0p2        125001 33292287 33167287 15.8G 83 Linux
/dev/mmcblk0p3      33292288 61315071 28022784 13.4G 83 Linux

そして私組み込み(他のコンピュータにデバイスがありsdasdbに移動します。 (間違って選択しました。)64GB SDカードパスdddcfldd実際):

# dcfldd if=/dev/sda of=/dev/sdb bs=1M

今私の新しい64GB SDカードは次のようになります。

luis@Fresoncio:~$ sudo fdisk -l
Disk /dev/mmcblk0: 59.5 GiB, 63864569856 bytes, 124735488 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: 0xec4e4f57

Device         Boot    Start      End  Sectors  Size Id Type
/dev/mmcblk0p1             1   125000   125000   61M  c W95 FAT32 (LBA)
/dev/mmcblk0p2        125001 33292287 33167287 15.8G 83 Linux
/dev/mmcblk0p3      33292288 61315071 28022784 13.4G 83 Linux

今は問題ありません。しかし、もうアクティブな32GB SDカードがなく、64GB SDカードしか残っていません。このカードを空の32GB SDカードに再転送したいです。
この場合、次のものが利用できないとしますdddcfldd

どうですか?ddまたは使用できますかdcfldd?乗り継ぎが到着したらどうなりますか?32GBの境界ターゲットSDカードにあります(データ整合性の問題)?

追加の説明:

  • どの他の方法SDカードの複製は正常に動作しますが、問題があります。この場合、一部のSDカードがドライブを起動します。ラズベリーパイ2partimageorによる複製はgparted機能しません(Raspberryが起動しません)。ddクローンだけが完璧なようです。

  • 似たような質問ですが、私の考えには違います。

  • このdcflddツールの構文と動作は同じですdd。より多くの情報(進捗状況など)を提供するだけです。ここにいるマニュアルページ

答え1

sdaが64GBのソースSDカードで、sdbが32GBのターゲットSDカードであるとします。以下を使用して、必要な数のセクタのみをコピーするようにddを制限できます。

dd if=/dev/sda of=/dev/sdb bs=512 count=61315072

答え2

私はハードドライブを使ってこれを何度もしました。dd小さなハードドライブに大きなハードドライブを挿入するだけです。 32GBに達すると失敗しますが大丈夫です。

それでも疑わしい場合は、周囲の古いUSBスティック/ハードドライブでこれを実行してください。

答え3

任意のツールを使用して、次のコピーを作成できますcatddメリットはなく、catデメリットしかありません。) ターゲットディスクの端に達すると停止します。この簡単なアプローチの欠点は、関心のあるセクションのコピーが成功したかどうかを言うのが難しいことです。

コピーしたいアイテムを正常にコピーした場合、コピーコマンドは成功ステータスを返し、そうでない場合はエラーが発生するようにするには、適切な量のデータをコピーするコマンドを使用します。ファイルの最初のNバイトをコピーするには、を使用しますhead -c。コピーするバイト数は、セクタ数にセクタサイズを掛けた値です(fdiskリストでは512バイト)。セクタはゼロから始まる(セクタ0にはパーティションテーブルを含む)、コピーするセクタの総数は、最大の「終了」値に1を加えた値です。

head -c $((61315071*512+512)) /dev/sdSOURCE >/dev/sdDESTINTATION

sdSOURCEsdDESTINATION適切なデバイス名に変更します。上書きするデバイスが上書きするデバイスであることを確認するのに役立つ他のコマンドをfdisk -l /dev/sdDESTINATION実行grep sdDESTINATION /proc/partitionsします。file -s /dev/sdDESTINATION

関連情報