web-dev-qa-db-ja.com

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

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

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

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

30

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

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

ブートセクターなどをすべて含めるには、次のようにします。

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

ここで、hdxは40Gディスク、hdyは160Gディスクです。 /dev/hdx1のようなパーティション番号がないことに気づくでしょう。これにより、ディスク全体、パーティション情報などすべてがコピーされます。

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

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

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

6

通常、「外部エンクロージャーを使用して2番目のハードドライブを接続し、Linux CDから起動してから、dd if=/dev/sda of=/dev/sdb bs=1Gなどのコマンドを使用しますが、同じ手法を仕事に使用したいので、私にはもっと良い解決策があるかもしれません。

すべてのサーバーとラップトップは Clonezilla を使用して職場でイメージされます。使用方法は2つあります。1つは専用サーバーを使用しており、おそらくやり過ぎです。もう1つは、ブートCDと外部ハードドライブを使用します。

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

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

17
Matt Simmons

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

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

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

5
psusi

単にパーティションをコピーするには、dd if=/dev/srcDrive of=/dev/dstDriveまたはこのようなもの。 man page を読むことをお勧めします。申し訳ありませんが、今仕事中のため、これ以上の情報はお伝えできません。

3
Berne

Ddでそれを行う方法を尋ねましたが、dumpの出力をrestore。ソースad1s1aおよびターゲットad2s1aが指定された場合:

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

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

2
zvolkov

簡単な例はこれです:

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

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

別のアイデアとしては、 rsync を使用することもできます(-az [ファイルを1つずつコピーするのではなく、ファイルをパッケージ化する]または--numeric-ids [ 「root」のような名前の代わりにuid/gid]と、おそらく他のいくつか)。リンクには多くの例が含まれています。

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

わからないときは、HDDをフォーマットしてからrsyncでデータを同期します。

1
fwaechter

さて、私は両方のディスクを接続し、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を編集してください。新しい状況。

1
Jorge Nerín