
私は Mint Linux を搭載したノートパソコンを使用しており、数日間は Windows を使用する予定です。そのため、OS を「保存」して、後で同じドライブに戻したいと考えています。
フルディスク暗号化を使用しています (Mint インストール時にデフォルトで付属するもの)。
Linux でライブ CD を起動し、次のようなコピーを作成します。
dd if=/dev/sda of=/media/externalhd/mint.img
[ここでフォーマットしてウィンドウを追加します] 完了したら、ライブ CD で再度起動して次の操作を実行します。
dd if=/media/externalhd/mint.img of=/dev/sda
うまくいくはずですよね?
答え1
コマンドは問題なく、指摘されているように、これによりドライブ上の空き領域もすべて節約されます。ただし、システムのインストール時にセキュア ワイプ オプションを選択した場合、ドライブの空き領域はランダム ノイズでいっぱいになるため、出力を圧縮してもほとんどメリットはありません。
コピーにはより大きなブロック サイズを使用し、システム バッファー キャッシュの汚染を避けて、生の読み取りを高速化する必要があります。
- dd オプション iflag=direct または oflag=direct は、Linux のキャッシュ層をバイパスしてデバイスから直接読み取ります。
- dd オプション bs (ブロック サイズ) は、一度に読み書きするデータの量を dd に指示します。最新のディスク ドライブは、データのチャンクが大きいほど動作が高速になります。
圧縮は CPU を大量に消費しますが、gzip は 1 つのコアのみを使用するため、これがコピーの速度を制限する要因になる可能性があります。すべての CPU コアを使用する pigz を使用すると速度は上がりますが、それでも CPU に制約される可能性があります。
大まかに言うと、最新の CPU の場合、ストレージ容量が問題になる場合や、USB2 より低速なネットワークで接続している場合は、圧縮を使用します。USB3、SATA、または 100Mbit 以上のネットワークは、ほぼ確実に gzip より高速なので、速度は上がりませんが、スペースをいくらか節約できる可能性があります。
ストレージへの接続が遅い場合 (10Mbit イーサネットまたは USB1/2 など) やスペースが不足している場合に使用するコマンドは次のとおりです。
dd if=/dev/sda bs=1M iflag=direct | pigz -c > /media/external/image.sda.gz
ストレージへの接続が高速で、使用容量が問題にならない場合は、次のコマンドを使用します。
dd if=/dev/sda of=/media/external/image.sda.raw oflag=direct iflag=direct bs=1M
答え2
これは機能しますが、最善の方法ではありません。生データにゼロがあるため、画像は非常に大きくなります。この動作を回避したい場合は、次のようにします。
dd if=/dev/sda | gzip > /media/externalhd/backup.img.gz
Gzip は、イメージ上でゼロを考慮する必要がなく、単にカウントされるだけであることを認識しているため、特にディスク上に空き領域がある場合はイメージが小さくなり、さらに gzip 圧縮も行われるため、何倍も優れています。