dd は、ISO の 1 つのパーティションのみを HDD の未割り当て部分にコピーします。

dd は、ISO の 1 つのパーティションのみを HDD の未割り当て部分にコピーします。

私の質問は、dd/ハードディスク/iso イメージのコンテキストではより一般的です。詳細は以下の通りです。

/dev/loop1p1およびとしてマウントされた 2 つのパーティションを含むライブ ISO イメージがあり、末尾に未割り当ての空き領域がたくさんある HDD があります。さらに、USB ドライブが接続されており (同じイメージが書き込まれている)、そのコンテンツは、 および/dev/loop1p2で利用できます。/dev/sdb1/dev/sdb2

私の仕事は非常に基本的なものです:

/dev/sdb2USB (またはマウントされた ISO /dev/loop1p2) のパーティションを HDD の空き/未割り当て領域にクローンします。

ddいつもそうであるように、それが前進への道であると信じています。

if=側:

は、最初の引数としてddディスク全体 ( ) またはパーティション ( など) を受け入れますが/dev/sdb、HDD からの残りの引数( ) は同質である必要があり、決定側であるように見えます。/dev/sdb1/dev/sdb2if=of=/dev/sda

of=側:

of=コマンドの引数に渡すためのパーティションが HDD 側にまだ作成されていませんdd。フル HDD を記述子/dev/sdaとして使用するとof、HDD 上の既存のパーティションが失われるため、これは絶対に望ましくありません。

それで、質問をもう一度繰り返します。

特定の USB ドライブを HDD にクローンするにはどうすればよいですか?

/dev/sdb2それとは別に、またはと「正確な」寸法の新しい空のパーティションを HDD 上に何らかの方法で作成し/dev/loop1p2、それを引数として使用した場合、何か役立つでしょうかof=?

答え1

/dev/sdb2または と「正確な」寸法を持つ新しい空のパーティションを HDD 上に何らかの方法で作成し/dev/loop1p2、それを引数として使用した場合、何か役立ちますかof=?

はい、これがおそらく最も簡単な方法です。サイズは正確に同じである必要はなく、より大きくてもかまいません。厳密に言えば、少なくとも内部のファイルシステムと同じ大きさでなければなりません/dev/loop1p25月ファイルシステムのサイズは、それ自身よりはるかに小さくなることがあります/dev/loop1p2。特定のファイルシステムの正確なサイズを取得する方法は、ファイルシステムによって異なります(ext、btrfsなどでは異なるツール)。ただし、ファイルシステムがパーティションよりはるかに小さいことはまれなので、のサイズは/dev/loop1p2妥当で、安全最小。

新しいパーティションがファイルシステムに対して小さすぎる場合、一部のデータやメタデータが失われる可能性のある、不健全なファイルシステム クローンが作成されます。適切なfsckツールを使用すると、クローンが正式に健全になるかどうかはわかりませんが、収まらなかったデータは回復されません。ソース ファイルシステムの空き容量に関係なく、データ損失が発生する可能性があります。

新しいパーティションが より大きい場合、何も問題はありません。 にどのようなファイルシステムがあっても/dev/loop1p2、ターゲット パーティションが大きいかどうかは問題になりません。ただし、後でパーティション全体を占有するようにファイルシステムを拡張する予定がない限り、はるかに大きなパーティションを作成するとスペースの無駄になります。

ですので、新しいパーティションのサイズは/dev/loop1p2おそらく最適です。一部のツールはパーティションの種類に注意を払うため、新しいパーティションのIDを適切に設定する必要があります(パーティションごとに異なります)。MBR の DOS パーティション テーブルそしてGUID パーティション テーブル)。

新しいパーティションを作成せずにクローンを作成できますか? はい、できますが、その価値はありません。

のようなデバイスノードは、/dev/sdx3定義済みのフラグメントにアクセスするための便利な抽象化です/dev/sdx(フラグメントの外側には何もアクセスしません)。つまり、代わりに次のようにdd of=/dev/sdx3実行できます。dd of=/dev/sdxちゃんとしたオフセット ( obs=seek=) で、一般的にはフラグメント ( count=) を超えて書き込まないように注意してください。面倒ですが、パーティションを作成せずにターゲット HDD の未割り当て領域にクローンすることは完全に可能です/dev/sdb2。ただし、

  • タイプミスや計算エラーがあると、対象の HDD の不要な部分が上書きされる可能性があります (その場合、がdd「データ破壊者」の略であることがわかります)。
  • いくつかのツールは動作し、オフセットすることができますが、次の/dev/sdxようなパーティションが必要です/dev/sdx3便利に実際にはクローンされたファイルシステムを使用するので、遅かれ早かれいずれはそれを作成することになるでしょう。
  • パーティションがない場合、クローンによって占有されるスペースは空きスペースとみなされます。まともなツールはそれを自発的に使用すべきではありませんが、あなた占有されているフラグメントの正確なサイズや、占有されているという事実さえも忘れてしまう可能性があります。

これらの理由から、クローンを作成する前にパーティションを作成するのが正しい方法です。パーティションを作成したら、それをof=ポイントするのが正しい方法ですdd

関連情報