DDを使用して、古いドライブから新しいドライブにデータを移行するにはどうすればよいですか?


29

ラップトップの内蔵SATAハードドライブを40Gドライブから160Gドライブにアップグレードしています。SATAカードがあるLinux / Ubuntuデスクトップがあります。実際に、仕事中のいくつかのCentOSとFreeBSDのボックスに対して同じことをしたいと思いますが、これは同じ解決策を持っているようです。

DDを使用して40Gパーティションを160Gドライブにミラーリングできる、または40Gパーティションをローカルシステムにイメージとして保存し、その40Gイメージを160Gドライブにコピーできると聞いたことがあります。

誰も私がこれを行う方法を説明できますか?gpartedなど、他のユーティリティが必要ですか


3
ああ...これが最初の質問です!!
ハーシットシュリバスタヴァ

2
質問ナンバーワン!私はこのサイトの提案者でもあり、かなり技術的な質問でサイトをキックオフすると思いました。私はTシャツといくつかの盗品で報われました。
ステファンLasiewski

回答:


6

最初のタスクは、両方のディスクを既存のLinuxシステムに接続するか、新しいディスクを元のシステムに接続することです。

正常なディスクの上に空のディスクをコピーするのは非常に簡単なので、非常に注意する必要があります!

最終的にブートセクタとすべてにするには、次のようなことをします。

dd if=/dev/hdx of=/dev/hdy

hdx40Gディスクとhdy160Gディスクはどこにありますか。のようなパーティション番号がないことに気付くでしょう/dev/hdx1。これにより、ディスク全体、パーティション情報などがコピーされます。

新しいディスクは、40Gが割り当てられた古いディスクと同じようになります。ラップトップに戻すとすぐに起動します。LVMを使用したいですか?それ以外の場合は、すべてのパーティションを使用しなかったと思いますか?このポイントを超えるには、さらに多くの情報が必要です。

別の解決策は、各パーティションをダンプすることです。これには、ブート情報を再作成する必要があるため、より多くの状況認識が必要です。

これらはすべて、ハードディスクのアップグレードではなく、コンピューターのクローン作成に最適です。バックアップを使用して新しいインストールに復元することをお勧めします。


17

通常、「外部エンクロージャーを使用して2台目のハードドライブを接続し、Linux CDから起動し、などのコマンドを使用するなどのソリューションをdd if=/dev/sda of=/dev/sdb bs=1Gお勧めしますが、同じ手法を使用して仕事をしたいので、より良いソリューション。

私のサーバーとラップトップはすべて、Clonezillaを使用して職場で撮像されます。使用には2つの方法があります。1つは専用サーバーを使用し、おそらくあなたにとってはやり過ぎです。もう1つはブートCDと外付けハードドライブを使用します。

アイデアは、Clonezilla CDで起動し、大きめの(ソースドライブよりも大きい)外部USBドライブを用意することです。Clonezillaは、既存のドライブのイメージを作成し、その後、マシンの電源を切り、ドライブを交換し、Clonezillaを再起動して、データを復元します。

これにより、A)より大きなドライブにイメージを配置し、B)データのバックアップを保持する機会が与えられます。


5

ddを使用してそのようなディスクをコピーすることはできます、そうすることにはいくつかの欠点があります。

  1. 宛先は、ソースとまったく同じサイズか、それより大きくなければなりません
  2. コピー後、追加のスペースを使用するには、パーティションのサイズを変更する必要があります
  3. 空き領域をコピーするのに時間を無駄にします
  4. 古いディスクに存在する断片化は保持されます

Ghost4Linux、partclone、clonezillaなどのイメージングプログラムを使用すると、少なくとも番号2と3が処理されます。また、新しいディスクをフォーマットしてマウントし、すべてのファイルをcp -ax(rootとして)コピーしてから再インストールすることもできます新しいドライブのブートローダー。この方法には、上記の欠点はありません。


3

パーティションを単純にコピーするには、次のdd if=/dev/srcDrive of=/dev/dstDriveようなものを使用できます。そのマニュアルページを読むことをお勧めします。申し訳ありませんが、今は仕事中ですので、これ以上情報を提供することはできません。


2

ddを使用してそれを行う方法を尋ねられましたが、dumpの出力をrestoreにパイピングする方が成功しました。ソースad1s1aとターゲットad2s1aを考えると

$ mount /dev/ad2s1a /target
$ cd /target
$ dump -0Lauf - /dev/ad1s1a  | restore -rf -

これをFreeBSDで試しましたが、実際にはFreeBSDフォーラムで見つけました


1

1つの簡単な例は次のとおりです。

dd if=/dev/sda of=/dev/sdb

ただし、特別なニーズがある場合は、マンページ(man dd)を読むか、Googleで検索する必要があります。

別のアイデアは、rsyncの使用です(-az [ファイルを次々にコピーする代わりにファイルをパッケージ化する]または--numeric-ids [名前の代わりにuid / gidを使用するなど、正しいオプションを設定することを忘れないでください「ルート」]および多分他)。リンクには多くの例が含まれています。

新しいHDDにパーティションがない場合は、gpartedまたはpalimpsetを使用できます。

確信が持てない場合は、HDDをフォーマットし、rsyncでデータを同期します。


1

さて、私はこれに似た移行を、接続されたディスクとLive cdの両方で起動することで行ってきました。

  1. 2番目のディスクの最初のディスクのパーティション情報を再作成し、場合によっては余分なスペースを使用するためにいくつかのパーティションを大きくします。
  2. 次に、/ dev / sda {1,2,3,4}があり、それらを/ dev / sdb {1,2,3,4}にコピーするとします。mkdir/ mnt / sd {a、b} {1 、2,3,4}、各ディレクトリの各パーティションをマウントします(または、1つずつ実行したい場合は、/ mnt / origin / mnt / destinationを作成し、各ペアをマウント/アンマウントします)
  3. 次に、cp -avr / mnt / origin /を実行します。/ mnt / destination /(またはcp -avr / mnt / sda1 /。/ mnt / sdb1 /
  4. ウェブを閲覧している間お待ちください:)
  5. grub、lilo、または使用するブートマネージャを再インストールすることを忘れないでください。

コピーされたファイルをデフラグする方法でそれを行うと、パーティション内のファイルシステムを変更することもできます(reiserfsまたはext3からext4に移行するなど)が、コピー後に/ etc / fstabを編集することを忘れないでください新しい状況。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.