このコマンドを使用して、2つの同一のドライブでdd
を実行しています。
dd if=/dev/sda of=/dev/sdb bs=4096
両方のハードドライブはまったく同じモデル番号であり、両方とも1TBのストレージスペースがあります。 /dev/sda
は4096のブロックサイズを使用します。/dev/sda
はローカルドライブであり、/dev/sdb
はリモートキャディです。次のプロトコルを使用できる場合があります。
96時間未満でこのドライブコピーを実行する方法はありますか? dd
以外のツールを使用できます。
次のパーティション(UUIDを含む)のクローンを作成する必要があります
*
Clonezillaでサポート
私はClonezillaを試しました(それは非常に高速でした)が、必要なHFS +スマートコピーをサポートしていません。おそらく最新バージョンがこれをサポートしていますか?
最初のクローンを作成したとき、HFS +以外のすべてのパーティションを作成しましたが、非常に迅速に実行されました。 (合計3時間以内)
私の経験では、コマンドラインにはdd
のような高速なものはないと思います。 bs
パラメーターを調整すると、速度を上げることができます。たとえば、読み取り/書き込み速度が100 MB/sを超えることがわかっているHDDが2台あるため、次のようにします。
dd if=/dev/sda of=/dev/sdb bs=100M
また、両方のドライブで最速の速度をチェックしてからクローン作成を続行するpv
(最初にインストールする必要があります)もあります。もちろん、これはルートから実行する必要があります。
pv < /dev/sda > /dev/sdb
PVでは156 MB/sになりました
速度とは別にpv
の良い点は、進行状況、現在の速度、開始からの時間、ETAが表示されることです。私が知らないHFS +に関しては、「スピード」の部分で助けようとしているだけです。 pv
または非常に最適化されたbs
パラメーターを使用すると、4 TBドライブを7時間未満(現在の速度150 MB/sで6時間50分)で実行できます。 。
使用している接続タイプと使用可能な他の接続タイプを使用して、いくつかのテストを行いました。 Asus Z87 ProとIntel DZ68DPを使用していました。これが私の結果でしたが、最初に、多くの転送速度の理論速度(生の速度)がまさにそれであることを知る必要があります理論。実際のテストを行ったところ、それらは未加工の速度の40%から80%の間にあることが明らかになりました。このテストは、使用するデバイス、接続の種類、マザーボード、接続ケーブルの種類、ファイルシステムの種類などによって異なります。それを念頭に置いて、これは私が得たものです(デバイスへの書き込み速度をテストしただけで、通常は読み取りが高くなります):
Connected Device - Connection Type - Speed (Write Speed)
USB 2.0 USB 2.0 25 MB/s
USB 3.0 USB 2.0 35 MB/s
USB 3.0 USB 3.0 73 MB/s
eSata eSata 80 MB/s
Sata 2G HDD Sata 2G 120 MB/s
Sata 3G HDD Sata 2G 140 MB/s
Sata 3G HDD Sata 3G 190 MB/s
Sata 2G SDD Sata 2G 170 MB/s
Sata 3G SDD Sata 2G 210 MB/s
Sata 3G SDD Sata 3G 550 MB/s
問題は接続タイプとブロックサイズです。最速の結果を得るには、ブロックサイズを通常の最低書き込み速度の半分にする必要があります。これにより、安全なマージンが得られますが、それでも多数を許可します。もちろん、データを保持するのに十分なRAMが必要です。
Usb 2.0は12メガビット/秒(Mbps)、Usb 2.0 High Speedは480 Mbpsです。これはもちろん生の速度です。 1バイトが8ビットでフレーミングのオーバーヘッドがある場合、使用可能な速度はMB/sで通常は小数点以下です。したがって、たとえば480 rawは48MB使用可能になります。これは数学的最適であり、現実の世界では少し低くなることに注意してください。 usb 2.0高速接続の場合、実際のストレージデバイスが接続速度と同等またはそれを上回ることができる場合、最大書き込み速度は30〜35 MB程度になるはずです。
よく調整されたdd
( 'pv')または 'cat'コマンドの生の速度は打ちにくいですが、コピーに問題がある場合(不良セクタ、停電、ユーザーエラーなど)その後、最初からやり直す必要があります。
ddrescue -ddの速度をすべて備えたFOSSツールですが、ディスクエラーを回避し、障害が発生した場合は後で再開することをお勧めします。
Windows 7をHDDからSSDに移動しているところ、これと他のいくつかの答えが見つかりました...他の人を助けるかもしれないことを学びました。私の場合、ソースドライブはより大きく、それ以外の場合は/ dev/sda->/dev/sdbデバイスレベルで作業していました。
Win7とその3つのパーティション... USBでXbuntu 14.04ライブcdを使用しました。勝利したコンピューターのDVDを取り出し、SSDをその場所に置きました。パートクローンをインストールして、これを試しました:
partclone.ntfs -b -N -s /dev/sda3 -o /dev/sdb3
PartcloneはWindowsでchkdiskを実行する必要があるntfsで公開されていたので、簡単な修正でpartcloneが幸せになりました。
ntfsfix -b /dev/sda3
ntfsfix -d /dev/sda3
すべてのコマンドはルートとして実行されます。 Partcloneのncurses UI(-Nオプション)は、転送が7GB/minであり、最終的には5GB/minであり、83MB/secに相当すると述べました。素晴らしいのは、partcloneは未使用のスペースをコピーしないため、クローンが非常に高速になったことです。
追加の潜在的なゴッチャ:
転送先のドライブが以前に使用されていた場合、GPTの残りがある可能性があります。 Windows 7の工場出荷時インストールは通常、msdos/mbrパーティションテーブルです。宛先ドライブからGPTフラグメントを削除する必要があります。これ nix&Linux QA はこれを助けてくれました。デバイスでgdisk
を使用し、x、z、yesを使用してGPTデータをザッピングし、MBRを保持していることを確認する必要があります。
デバイスレベルのddを実行しない場合は、忘れずにMBRをコピーする必要があります。dd if=/dev/sdb of=/dev/sda bs=446 count=1
sdbはソースまたは古いドライブ、sdaはデスティネーションまたは新しいドライブ( source )
最近、100GBパーティション(HDD)のイメージを作成して、新しいSSDディスクに書き込みました。
プロセスを大幅にスピードアップできるヒントがあります:)
ファイルを小さな部分に分割します(ファイルが大きいほど、動作が遅くなります)
Sudo dd if=/dev/sda3 conv=sync,noerror bs=2M | split -a 3 -d -b 1G - /maindisk.img
プロセス中に、(別のターミナルで)を使用して速度を確認できます
pgrep -l '^dd$' #to find PROCESSID
kill -USR1 PROCESSID #to check the speed
次に、結果ファイル(maindisk.img000、maindisk.img001など)でいっぱいのディレクトリがある場合、次を使用します。
Sudo cat maindisk.img* | Sudo dd of=/dev/sda1
イメージをSSDの新しいパーティションに「書き込む」ため(パーティションは古いパーティションと同じサイズでなければなりません)
私にとっては、それは通常の方法よりも速く(分割することなく)動作しました。イメージ作成の平均速度は約13MB/sでした。 「通常」の方法を使用すると、〜15MB /秒で始まり、1MB /秒に減少します。
このスレッドを見つけた人にとっては、ddrescueのようなデータリカバリ用に設計されたツールを使用する方がはるかに簡単で高速です。読み取りエラーが発生した場合に、まず良い部分を救おうとします。また、いつでも救助を中断し、同じ時点で後で再開することができます。
2回実行します。
最初のラウンドでは、読み取りエラーなしですべてのブロックをコピーし、エラーをrescue.logに記録します。
Sudo ddrescue -f -n /dev/sdX /dev/sdY rescue.log
2回目のラウンドでは、不良ブロックのみをコピーし、ソースからの読み取りを3回試行してからgivingめます。
Sudo ddrescue -d -f -r3 /dev/sdX /dev/sdY rescue.log
これで、新しいドライブをマウントし、ファイルシステムの破損を確認できます。
詳細:
https://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html
別のブロックサイズを使用します。 dd
が一度に読み取るデータの量です。読み取りが少なすぎると、プログラムロジックに多くの時間が費やされ、読み取りが多すぎると、大きなデータの移動に多くの時間が費やされます。
さまざまなブロックサイズで速度を測定するには、次のbash
スクリプトを使用します。
$dev
をデバイスに設定しますcbtotal
を修正します (set -o errexit; skip=0; cbtotal=$((120*1024**2)); bs=256;
for power in `seq 10`; do
bs=$((bs*2)); skip=$((skip/2)); count=$((cbtotal/bs));
if [ "$count" -lt 1 ]; then break; fi;
echo $bs;
dd if=$dev of=/dev/null skip=$skip bs=$bs count=$count
skip=$((skip+count))
done)
ディスクの先読みにより、結果はより大きなサイズに偏る可能性があります。そのため、cbtotal
を十分に大きく設定することが重要です。
Idは、読み取り速度を上げるために、入力/読み取り-ファイル/ディスクをSATAにすることをお勧めします。 USB 2.0 High Speedは、33816 kb/sの平均速度がddrescueのときと比較して優れているため、設定はUSB 2.0からSATA2014 kb/s