小さいディスクへのコピー(HDDからSSDへの移行など)

500GBのHDDの中身を480GBのSSDへコピーする方法。
Linuxコマンドをもろもろ使います。

手順
1.HDDの使用サイズを480GBに抑える。
2.HDDのパーティションを480GB以内に移動する。
3.HDDからSSDへディスクダンプ(コピー)する。
4.gptを修正する。
5. SSDのサイズに応じてパーティションを拡張する

以下、実作業。
1.HDDの使用サイズを480GBに抑える。
不要なファイルやアプリを削除するなどあれこれ。

2.HDDのパーティションを480GB以内に移動する。
2−1. 「GParted Live CD」でググって起動できるCDを作成してください。
2−2. Live CDの準備できたらHDDとSSDをパソコンから取り出してUSBなどで接続できるようにします。
2−3. Live CDでパソコンを起動します。以降の作業はほとんどLive CDで起動後のLinuxでの作業です。
2−4. デスクトップにある「GParted」をダブルクリックして起動します。というか、たぶん最初から起動されています。
2−5. HDDとSSDがどちらがどちらかを調べます。右のディスクとかなんとかのタブで「/dev/sda」とか「/dev/sdb」とかを切り替えてパーティションとディスク容量を見てそれっぽいのがそれです。ここではコピー元のHDDを「/dev/sda」、コピー先のSSDを「/dev/sdb」として進めていきます。自分の環境で置き換えてください。
2−6. 大きいサイズのディスク、この場合はHDDですが、HDDのパーティションの中で、未使用領域があるパーティションを右クリックし、スライダーでサイズを小さくします。小さくするパーティションが最後(1番右)のパーティションでない場合は、右のパーティションを右クリックしてサイズはそのままにパーティションの場所を左に移動して詰めていきます。HDDのパーティションが使っているサイズがSSDの容量よりも小さくなるように調整が済んだら、「Apply」ボタンをクリックして変更を適用します。

3.HDDからSSDへディスクダンプ(コピー)する。
3−1. デスクトップにある「Terminal」をダブルクリックして起動します。以下のコマンドを実行します。

sudo su -
dd if=/dev/sda of=/dev/sdb bs=1024 count=480MD

ifにはコピー元、
ofにはコピー先、
bsにはこの値、
countにはコピーするサイズ÷1024
を指定します。
bs × countがコピー先ディスクの容量なので本当はこの値の組み合わせは正しくなく、大きいサイズですが、コピーするサイズを超えたらエラーで止まってくれるので大きい値を指定するので問題ありません。コピーしたいサイズと同じかちょっと大きいサイズの組み合わを指定してください。

4.gptを修正する。
4−1. 3でコピーが出来ましたが、サイズが間違っているのでgptの情報を修正します。
Terminalで以下のコマンドを入力します。

gdisk /dev/sdb
x
v
e
m
w

xでプロフェッショナルモードに移行して、
vでgptの整合性を確認し、
eで修正し、
mで通常モードに戻り、
wで変更内容を書き込みます。
4−2. GPartedのメニューの「File」から「Refresh」を選んでディスク情報を更新します。問題がなければパーティションが正しく表示されます。

5. SSDのサイズに応じてパーティションを拡張する
2でHDDからSSDへコピーするためにHDDのパーティションを小さめに変更しました。なので、ここでコピー後のSSDパーティションを、容量一杯に拡張します。手順は2の逆です。