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カードに再度転送したいと思います。
この場合、使用できないddと思います。dcfldd

どうすればいいですか?ddまたは を使用できますかdcfldd? 転送が到着すると何が起こる可能性がありますか?32 GB境界宛先 SD カードに (データ整合性の問題)?

その他の注記:

  • どれでも他の方法SDカードのクローンを作るのはOKですが、問題があります。このケースのシナリオは、ラズベリーパイ2partimageまたは経由のクローン作成は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大きい方のディスクを小さい方のディスクに挿入するだけです。32 GB に達すると失敗しますが、問題ありません。

それでもまだ疑問がある場合は、手元にある古い USB スティック/ハードディスクで試してみることをお勧めします。

答え3

コピーには任意のツールを使用できます。たとえば、catddには に対する利点はなくcat、欠点しかありません。ターゲット ディスクの終わりに達すると停止します。この単純な方法の欠点は、関心のある部分のコピーが成功したかどうかを判断するのが難しいことです。

コピー コマンドが、コピーしたい内容が正常にコピーされた場合は成功ステータスを返し、それ以外の場合はエラーを返すようにするには、適切な量のデータをコピーするコマンドを使用します。ファイルの最初の N バイトをコピーするには、 を使用しますhead -c。コピーするバイト数は、セクター数にセクター サイズ (fdiskリストでは 512 バイト) を掛けた値です。セクターは 0 から始まる (セクター 0 にはパーティション テーブルが含まれます) ので、コピーするセクターの合計数は、最大の「終了」値に 1 を加えた値になることに注意してください。

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

sdSOURCEおよび をsdDESTINATION適切なデバイス名に置き換えます。 および およびfdisk -l /dev/sdDESTINATIONgrep sdDESTINATION /proc/partitionsfile -s /dev/sdDESTINATION上書きするデバイスが上書きしようとしていたデバイスであることを確認するために役立つと思われるその他のコマンドを実行します。

関連情報