web-dev-qa-db-ja.com

あるハードドライブから別のハードドライブにセクターレベルのコピー/クローンを作成する方法はありますか?

詳細を気にすることなく、MacBookの500GBドライブの内容を別の500GBドライブに複製しようとしています。しかし、ドライブにはOSXパーティションとAppleのBootCampを介したWin7のNTFSパーティションの両方が含まれているため、これは予期しない問題であることが判明しています。

Clonezilla を除いて、これまで見てきたツールにはすべていくつかの制限があります。 MacツールはNTFSパーティションを扱いたくありません。 Windowsツールは、HFS +パーティションおよび/またはハイブリッドMBR/GPTブートキャンプパーティションのいずれかについてまったく無知です。

Clonezillaは私が望むことを実行するように見えましたが、どうやらそれを使用する方法がわかりません。セクター間のコピーだと思ったことを実行した後、NTFSパーティションのみが移行されていることがわかりました。他は明らかに空でした。 (そして率直に言って、Clonezillaがパーティションテーブルを正しく移行したことも肯定的ではありません)。

注:これらのドライブですべてのセクターの読み取り/書き込みを行うには、SATAを使用して2時間以上かかります。だから私は、試用版とエラーを使用して、使用するClonezillaオプションの正しい組み合わせを絞り込むつもりはありません。

Linux(おそらくUbuntu)を起動してから、古いBSDコマンドを使用することが答えかもしれないと私は考え始めています。問題は、あるドライブから別のドライブにセクターレベルのコピーを実行するために使用するコマンド(またはパラメーター)がわからないことです。私の知る限り、ドライブのセクター数は同じであるため、これは簡単なはずです。はぁ。


はい、ddは機能します。 (ふぅ!)

Serverfault.comの対応する質問/交換への回答のリンクは、そこを見るとは思ってもみなかったので、特に感謝しています。

Serverfaultの交換からそれらについて学んだ後、私が使用したいくつかの追加の調整があります。

  • デフォルトの転送サイズである512バイトは使用しないでください。私の場合、フォームを使用しました
    _dd if=/dev/sda of=/dev/sdb bs=8192_
    これが大幅に増加したため、データ転送速度が向上しました。 (たまたま、両方のドライブのサイズが8192の倍数でした。それが問題かどうかはわかりませんが、そのようにすると安全だと感じました)。

  • ddコマンドから進行状況を取得する方法があります。どうやらddは、正しい信号を受信すると、現在の転送ステータスを表示します。 このserverfault回答 で提案されている方法を使用しました。ただし、進行状況情報で「氾濫」したくなかったため、10秒ではなく120秒の間隔を使用しました。

500GBドライブを別の500GBドライブに完全に複製するのに約2時間20分かかりました。 ddからの最終ステータスメッセージは
500107862016 bytes (500 GB) copied, 8353.86 s, 59.9 MB/s

このプロセスがオプションの点で欠けていることは、確かに単純さと完全性で補います。 :-)

5
irrational John

Linuxでは、ddコマンドで必要な処理を実行できます。

https://serverfault.com/questions/4906/using-dd-for-disk-cloning

空のドライブをクローンしたいドライブにクローンしないように注意してください。

3
James T

あなたがそれをしたいのならfast...そしてddはあなたが望むものではありません。どうして?

シングルスレッドだからです。つまり、次のように機能します。

  1. ソースからブロックを読み取り、準備ができるまで待機します
  2. このブロックをターゲットに書き込み、準備ができるまで待機します
  3. 後藤1

実際には、次のブロックの書き込みと読み取りが同時に発生する可能性がありますが、ddはそれを実行できません。

迅速なバックアップを行うには、 buffer ツールを使用できます。 ddと同様に、基本的に標準入力から標準出力まで機能するため、パイプで使用して、2つのサイトを実際に並列に機能させることができます。

おそらく最も好きなパラメータ化:

buffer -i /dev/sdX -o /dev/sdY -s 8192 -b 2048

クローンを作成します/dev/sdXから/dev/sdY、 早く。

bufferを使用して、パイプされたシェルコマンドを高速化することもできます。

pipe-chain-commands1 | buffer -s 8192 -b 2048 | pipe-chain-commands2

これにより、最初のチェーンは2番目のチェーンがその出力を消費しなくなるまで待機するべきではありません。