「古いHDDを新しいSSDへそっくり移したい」「サーバーを別筐体へ移行する前にディスクを丸ごとバックアップしておきたい」——そういった場面では、ファイル単位のコピーではなくブロックレベルのクローンが確実です。ここでは dd コマンドを軸に、デバイス確認から実行・検証まで、現場で使える手順を一気通貫で示します。
作業前にデバイス構成を必ず確認する
誤ったデバイスを指定すると、稼働中のデータが即座に上書きされます。作業前に lsblk でデバイスの対応関係を目視確認してから進めてください。
# デバイス一覧とマウント状況を確認
lsblk -o NAME,SIZE,TYPE,MOUNTPOINTS,MODEL
出力例では sda が移行元、sdb が移行先のように見えますが、NVMe SSDの場合は nvme0n1 / nvme1n1 という表記になります。接続後に必ずデバイス名を確かめ直してください。コピー元(if=)とコピー先(of=)を取り違えると復旧不能になります。
ディスクをまるごとクローンする基本手順
移行元ディスクがマウントされている場合はアンマウントするか、LiveUSBやレスキューモードで起動してから実行します。稼働中のルートパーティションをコピーすると、書き込み中のファイルが壊れた状態でコピーされる危険があります。
# /dev/sda を /dev/sdb へまるごとクローン(コピー先は完全上書き)
dd if=/dev/sda of=/dev/sdb bs=4M status=progress conv=fsync
# 完了後にバッファをフラッシュ
sync
bs=4M はブロックサイズの指定で、デフォルト(512バイト)より大幅に速くなります。status=progress オプションを付けると転送量と速度がリアルタイム表示されます(coreutils 8.24以降で利用可能)。conv=fsync は書き込みを確実にディスクへ反映させるオプションです。
注意:移行先ディスクの容量が移行元より大きい場合、クローン後に余った領域はパーティションテーブルに反映されません。growpart や resize2fs / xfs_growfs で拡張する追加作業が必要になります。
ディスクイメージファイルへのバックアップと復元
別ドライブへ直接クローンするのではなく、イメージファイルとして保存しておくパターンも実務では多用されます。
# ディスク全体をイメージファイルへ書き出す
dd if=/dev/sda of=/mnt/backup/disk_$(date +%Y%m%d).img bs=4M status=progress
# イメージファイルからディスクへ復元する
dd if=/mnt/backup/disk_20250601.img of=/dev/sdb bs=4M status=progress conv=fsync
ある運用現場では、月次メンテナンス前にこの手順でシステムディスクのスナップショットを取得しており、万一の際に30分以内で元の状態へ戻せる体制を維持していました。イメージファイルは gzip で圧縮すると保存領域を節約できますが、復元時の展開が必要になります。
# 圧縮しながら保存(容量を節約したい場合)
dd if=/dev/sda bs=4M status=progress | gzip -c > /mnt/backup/disk.img.gz
# 圧縮イメージから復元
gzip -dc /mnt/backup/disk.img.gz | dd of=/dev/sdb bs=4M status=progress conv=fsync
障害ディスクからデータを救出する場合
読み取りエラーが発生している劣化ディスクには、標準の dd よりも ddrescue(GNU ddrescue)の使用を検討してください。読み取り可能な領域を優先してコピーし、エラー箇所はスキップして後から再試行する仕組みになっています。
# ddrescue のインストール(Debian/Ubuntu系)
apt install gddrescue
# Fedora/RHEL/Rocky系
dnf install ddrescue
# 障害ディスクから救出(ログファイルを残すと途中再開が可能)
ddrescue -d -r3 /dev/sda /dev/sdb /tmp/rescue.log
-r3 はエラー箇所への再試行回数の指定です。ログファイルを保存しておくと、作業を中断して再開した際に済んだ領域をスキップしてくれます。クリック音や異音がするディスクは通電時間を最小化し、できるだけ早く救出を始めることが肝心です。
ブータブルUSBメディアを作成する
フロッピーが主流だった時代の「ブートディスク作成」は、今日ではISOイメージをUSBメモリに書き込む作業に置き換わっています。
# USBデバイスを確認(書き込み先を間違えないよう慎重に)
lsblk
# ISOイメージをUSBメモリへ書き込む(/dev/sdb はUSBデバイスに置き換える)
dd if=/path/to/rocky-linux-9.iso of=/dev/sdb bs=4M status=progress oflag=sync
注意:対象USBデバイス(例:/dev/sdb)のパーティション(/dev/sdb1 等)ではなく、デバイスファイル本体を指定してください。oflag=sync を付けることでバッファリングせず直接書き込まれるため、抜き取り前に sync を別途実行する必要がなくなります。書き込み完了まで抜かずに待ちます。
クローン後の動作確認と注意点
ディスクをクローンしただけでは起動できないケースがあります。以下の点を確認してください。
UUID の重複:クローンするとファイルシステムのUUIDが元ディスクと同一になります。両ディスクを同時に接続した状態でブートすると、どちらをマウントするか曖昧になります。移行先のみ接続した状態で起動し、必要に応じて tune2fs -U random /dev/sdb1(ext4の場合)でUUIDを変更します。
ブートローダーの再インストール:MBRスキームの古いシステムはGRUBをMBRへ書き込み直す必要があります。UEFIシステムでは /boot/efi パーティションが正しく認識されているか確認します。
# GRUBを新しいディスクへ書き込む(クローン先を /mnt にマウント済みの状態で)
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
chroot /mnt grub2-install /dev/sdb
chroot /mnt grub2-mkconfig -o /boot/grub2/grub.cfg
クローン後は移行元を残したまま移行先で起動確認を行い、サービスが正常に立ち上がったことを確認してから移行元を切り離すのが安全な手順です。本番環境での作業は必ずメンテナンスウィンドウ内で行い、手順書と切り戻し計画をあわせて用意してから臨んでください。
「コマンドは打てる。次は”現場で通用する型”を最短で身につけたい」——そんなあなたへ。
ネットの断片的なTipsをコピペするだけでは、体系的な運用スキルはなかなか積み上がりません。リナックスマスター.JPの無料メルマガ「リナマガ」では、現場で実際に使うLinuxサーバー運用の考え方を、順を追って実務目線でお届けしています。いま登録された方には、安全なサーバー構築の「型」をまとめた『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼント中です。
>> 図解60P『Linux入門マニュアル』を無料で受け取る
(メルマガ登録は10秒・いつでも解除OK)
※ 「独学の時間がもったいない」「プロから現場の技術を最短で学びたい」という本気の方には、2日で実務レベルが身につく初心者向けハンズオンセミナーもご用意しています。
