web-dev-qa-db-ja.com

Linux ddを使用して128GBドライブを120GBドライブにイメージ化するにはどうすればよいですか?

SSDが2つあります。私のシステム(Ubuntu 12.04)が1つにインストールされており、別のシステムにクローンを作成したいと思います。問題は、システムが現在128GBドライブ上にあり、新しいドライブは120GBしかないことです。 ddを使用して容量の小さいドライブにイメージを作成することは可能ですか?

1
Aderbal Nunes

あなたがしたいことをする方法:

  1. gpartedを使用して、システムパーティションのサイズを120GB未満に変更します...できれば、可能であれば、かなり120GB未満にして、実際に以下にあることを確認します。ターゲットドライブの合計サイズ。

  2. dd if=/dev/sda bs=8M of=/dev/sdb、ソースドライブとターゲットドライブがそれぞれsdaとsdbであると仮定します。これは、通常のマルチユーザーログインで実行されているソースOSからではなく、セーフモードまたはライブブート環境から実行します。

    [〜#〜]または[〜#〜]、ライブブート環境にネットワークアクセスがあり、ソースにユニバースがある場合:apt-get install pv ; pv < /dev/sda > /dev/sdb。このコマンドとddコマンドの違いは、ここでの目的のために、これがP-R-O-G-R-E-S-SB-A-Rを与えることです... :)

しかし、あなたが本当にやりたいことをするためのおそらくより良い方法:

  1. ターゲットドライブにUbuntuのベアインストールを実行します。 (新しいドライブにブートセクタを取得するためのより効率的な方法がありますが、ここでは「noob-friendly」を目指します。)

  2. ライブブート環境から両方のドライブをマウントし、rsync -harv --progress /path/to/source/ /path/to/target/。実行中のシステムではなく、ここで本当にライブブート環境になりたいことに注意してください。そうしないと、rsync中にファイルが変更/消失する可能性があることは言うまでもなく、devfs、procfsなどを処理する必要があります。

5
Jim Salter

手順

  1. 可能であれば、ソースドライブ(128Gb)のバックアップを作成します。

  2. Gparted USBを使用して起動し、それを使用してソースドライブ(128Gb)のパーティションをターゲットドライブサイズ(120Gb)未満に縮小します。フルドライブ、たとえばスペースがまったくない128Gbがある場合は、データファイルの一部を圧縮(Zip)するか、別の一時USBにコピーして120Gb(ターゲットドライブのサイズ)未満にする必要があります。 。そうしないと、ソースの内容をターゲットドライブに収めることができません。それは単に適合しません。

    念のために余分な空き容量を残してください(ジオメトリの変換などのために1Gbかもしれません。私のドライブは1つのサイズですが、ddとGpartedは異なるサイズで、わずかに異なります)。

  3. ソースドライブのパーティションがターゲットドライブのサイズ未満に縮小されたら、ddを実行できます。ソースをターゲットにコピーしていることを確認してください。そうしないと、非常に不幸になります。 (ソースが/ dev/sdaの場合、パーティションが120Gb未満の128Gbドライブであることを確認してください...ターゲットは/ dev/sdb新しい120Gbドライブです。

    dd if=/dev/sda of=/dev/sdb bs=4096 conv=notrunc,noerror

  4. ここで、必要に応じて、Gpartedに戻り、ソースドライブで、パーティションのフルサイズを最大許容数まで拡張できます。

Gpartedは、パーティションを縮小するのに最適で、使用されているスペースを表示するため、使用されているスペースより上の任意のサイズに縮小できます。 Gpartedを使用してパーティションをコピーして貼り付けようとしましたが、機能しませんでした。 Gpartedを使用してパーティションを縮小し、ddを使用してコピーを実行します。

終了すると、スペースが不足していると表示される場合があります。それは正常です。小さいディスクにコピーしています。ただし、小さいパーティションをコピーしているため、すべてのデータがコピーされます。 ddはすべての128Gbを120Gbにコピーしようとし、エラーをスローします。心配しないでください。ドライブへの損傷はありません。次に、Gparted USBを取り外し、ソースドライブを取り外して、新しい120Gbディスクを起動し、内容を確認します。空き容量が残っている場合は、以前に圧縮したファイルを解凍できます。

1
Luis H Cabrejo

各ドライブにはパーティションが1つしかない、またはあると想定しています。

ddは、パーティションとファイルシステムを128GBを使用するように定義するデータを含め、物理的に1つのドライブにあるデータの各ブロックを別のドライブにコピーするため、希望どおりに使用できません。また、最初のドライブの最後に保存されているデータのブロックはすべて失われます。

コメントでOttavioCampanaによってほのめかされた1つの簡単な解決策:

  1. LiveCDを使用してシステムを起動します
  2. 新しいドライブにファイルシステムを作成します
  3. 両方のドライブをマウントし、cp -aを使用して古いものを新しいものにコピーします

次に、新しいドライブがメインドライブになる場合は、新しいドライブにブートローダー(GRUBなど)をインストールする必要があります。

ベニーヒルのコメントは、他の解決策を提供する回答とともに、同様の質問へのリンクを提供します。

0
depquid

私が考えることができる唯一の実行可能なオプションは、ext4パーティションのサイズを変更して、最後に119GBのデータと9GBの空き領域が続くようにすることです。次に、bs =およびcount =コマンドでDDを使用して、120GBのデータをドライブにコピーできます。 (空き領域が1 GB残っているので、サイズを変更できます(安全のためにこれを行っただけです))

0
agz