ddのof=でデバイスを取り違えて、データ入りディスクを丸ごと消してしまった
症状(よく出るエラー)
USBメモリにISOを書き込んだつもりが、直後からシステムやデータディスクが読めなくなる。マウント済みだったパーティションで I/O エラーが多発し、再起動すると起動しない。
原因
dd はデバイス名の中身を一切確認せず、of= に指定した先頭から生のバイト列を書き潰す。/dev/sdb のつもりが /dev/sda だった、USBを挿し直した拍子にデバイス名が入れ替わっていた、という取り違えが典型。パーティションテーブルとファイルシステムの先頭が消えるため、書き込みが数秒進んだだけで復旧は極めて困難になる。
直し方
書き込む直前に必ず lsblk -o NAME,SIZE,MODEL,MOUNTPOINT で容量とモデル名を見て対象を特定し、マウント中のディスクには絶対に書かない。実行は sudo dd if=image.iso of=/dev/sdX bs=4M status=progress conv=fsync の形で、of= を最後にもう一度目視してから Enter を押す。消してしまった場合は即座に電源を切り、そのディスクには一切書き込まず、testdisk 等での救出を検討する。