ddコマンドによるUSBメモリの完全コピー
Linuxの`dd`コマンドでUSBメモリ全体をコピー(クローン)する方法です。パーティションやファイルシステムを含む全データをコピーします。
【重要】`dd`コマンドは便利ですが、誤った使用によりデータが完全に消去される危険性があります。コピー元(`if=`)とコピー先(`of=`)のデバイス名を絶対に間違えないでください。特にシステムのディスクを指定すると上書きされ、起動不能になる可能性があります。慎重に実行してください。
1. デバイス名の確認 (必須手順)
まず、コピー元とコピー先のUSBデバイス名を確認します。【重要】デバイス名を間違えるとデータが消えます。必ず確認してください。
USBメモリを接続し、ターミナルで以下を実行します。
lsblk
出力例:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 1.9T 0 disk
├─sda1
│ 8:1 0 512M 0 part /boot/efi
└─sda2
8:2 0 1.9T 0 part /var/ubuntu2204/tmp
/var/snap/firefox/common/host-hunspell
/
sdb 8:16 1 14.9G 0 disk <-- 例: コピー元USB (`SIZE`や`RM=1`で判断)
└─sdb1 8:17 1 14.9G 0 part /media/user/USB_SOURCE
sdc 8:32 1 29.8G 0 disk <-- 例: コピー先USB (`SIZE`や`RM=1`で判断)
- `lsblk`の出力で、`SIZE`(容量)や`RM=1`(取り外し可能デバイス)を参考に、デバイス名(例: `sdb`, `sdc`)を特定します。注意:パーティション名(`sdb1`など)ではなく、デバイス自体(`sdb`など)を選択してください。
- 確実な確認方法: USBメモリの抜き差し前後で `lsblk` の表示がどう変わるかを確認すると、デバイス名を特定しやすくなります。
2. ddコマンドによるコピー実行
以下のコマンドでコピーします。`if=`(コピー元)と`of=`(コピー先)のデバイス名を間違えないでください。 (`sdX` と `sdY` は確認した実際のデバイス名に置き換えます。)
sudo dd if=/dev/sdX of=/dev/sdY bs=4M status=progress oflag=sync
- `sudo`: 管理者権限で実行。
- `dd`: データをブロック単位でコピー。
- `if=/dev/sdX`: 入力元(コピー元)デバイス。
- `of=/dev/sdY`: 出力先(コピー先)デバイス。
- `bs=4M`: ブロックサイズ (4MB推奨、効率よくコピー)。
- `status=progress`: コピーの進行状況を表示。
- `oflag=sync`: 書き込みの整合性を確保(同期I/O)。
3. 書き込みの完了を確認 (Sync)
コピー完了後、OSのバッファデータをディスクに確実に書き出すため、`sync`コマンドを実行します。
sync
このコマンドは、全ての書き込み処理が完了するのを保証します。念のため実行を推奨します。
