
持っていた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
そして私転送された(別のコンピューターから、デバイスがsda
)sdb
それを(間違ったものを選択しました)64GB SDカードdd
(dcfldd
実際は )経由:
# 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 カードに (データ整合性の問題)?
その他の注記:
答え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
コピーには任意のツールを使用できます。たとえば、cat
(dd
には に対する利点はなくcat
、欠点しかありません。ターゲット ディスクの終わりに達すると停止します。この単純な方法の欠点は、関心のある部分のコピーが成功したかどうかを判断するのが難しいことです。
コピー コマンドが、コピーしたい内容が正常にコピーされた場合は成功ステータスを返し、それ以外の場合はエラーを返すようにするには、適切な量のデータをコピーするコマンドを使用します。ファイルの最初の N バイトをコピーするには、 を使用しますhead -c
。コピーするバイト数は、セクター数にセクター サイズ (fdisk
リストでは 512 バイト) を掛けた値です。セクターは 0 から始まる (セクター 0 にはパーティション テーブルが含まれます) ので、コピーするセクターの合計数は、最大の「終了」値に 1 を加えた値になることに注意してください。
head -c $((61315071*512+512)) /dev/sdSOURCE >/dev/sdDESTINTATION
sdSOURCE
および をsdDESTINATION
適切なデバイス名に置き換えます。 および およびfdisk -l /dev/sdDESTINATION
とgrep sdDESTINATION /proc/partitions
、file -s /dev/sdDESTINATION
上書きするデバイスが上書きしようとしていたデバイスであることを確認するために役立つと思われるその他のコマンドを実行します。