PERTANYAAN ASLI:
Jika saya memiliki 2 hard drive identik dengan karakteristik berikut:
- SATA 6.0 Gb / s
- 5400 rpm
- 3TB
Berapa lama waktu yang diperlukan untuk menyelesaikan copy lengkap?
Sejauh ini sudah berjalan selama 5 jam dan masih berjalan ...
Saya menggunakan Linux Ubuntu 12.04 64bit dan perintah yang saya gunakan adalah:
dd if=/dev/sdb of=/dev/sdc
PEMBARUAN: 1
Saya sekarang dapat melihat kemajuan, dan sudah 6+ jam untuk menyalin 430GB. HDD adalah 3TB ...
Apakah tidak ada cara yang lebih cepat untuk melakukan ini?
PEMBARUAN: 2
Ini tampaknya jauh lebih baik daripada sebelumnya (Terima kasih kepada Groxxda untuk sarannya):
sudo dd if=/dev/sdb bs=128K | pv -s 3000G | sudo dd of=/dev/sdc bs=128K
ETA adalah sekitar 9 jam untuk 3TB, sedangkan sebelum mencapai 430GB setelah 6 jam, jadi saya kira itu akan memakan waktu sekitar 36 jam menggunakan perintah sebelumnya.
SIGUSR1
, dan BSD menggunakan ddSIGINFO
bs=
argumen kedd
). Juga pertimbangkan untuk menghubungkan setiap HDD ke port datanya sendiri.Jawaban:
dd
berguna di masa lalu ketika orang menggunakan kaset (ketika ukuran blok penting) dan ketika alat yang lebih sederhana seperticat
mungkin tidak aman biner.Saat ini, cara penulisan yang
dd if=/dev/sdb of=/dev/sdc
rumit, rawan kesalahan, dan lambatcat /dev/sdb >/dev/sdc
. Meskipundd
masih berguna untuk beberapa tugas yang relatif jarang , itu jauh lebih tidak berguna daripada jumlah tutorial yang menyebutkan itu akan membuat Anda percaya. Tidak ada sihir di dalamdd
, sihir ada di dalamnya/dev/sdb
.sudo dd if=/dev/sdb bs=128K | pv -s 3000G | sudo dd of=/dev/sdc bs=128K
Sekali lagi perintah baru Anda lambat dan rumit. Data dibaca 128kB pada satu waktu (yang lebih baik daridd
standar 512B, tetapi tidak sebagus nilai yang lebih besar) Kemudian melewati dua pipa sebelum ditulis.Gunakan perintah yang lebih sederhana dan lebih cepat
cat
. (Dalam beberapa tolok ukur yang saya buat beberapa tahun yang lalu di Linux,cat
lebih cepat daripadacp
untuk menyalin di antara disk yang berbeda, dancp
lebih cepat daripadadd
dengan ukuran blok apa pun;dd
dengan ukuran blok besar sedikit lebih cepat ketika menyalin ke disk yang sama.)Jika Anda ingin menjalankan perintah ini
sudo
, Anda perlu menjadikan pengalihan sebagai root:Jika Anda menginginkan laporan kemajuan, karena Anda menggunakan Linux, Anda dapat dengan mudah mendapatkannya dengan mencatat PID
cat
proses (katakanlah 1234) dan melihat posisi deskriptor file input (atau output).Jika Anda ingin laporan kemajuan dan unix varian Anda tidak menyediakan cara mudah untuk mendapatkan di posisi file descriptor, Anda dapat menginstal dan menggunakan
pv
bukancat
.sumber
cat
lebih cepatdd
? Mungkinkah yangcat
menggunakan cache?sudo sh -c 'pv /dev/sdb >/dev/sdc'
bukansudo sh -c 'cat /dev/sdb >/dev/sdc'
?pv
tempat yang akan Anda gunakancat
.cat /dev/sdc1 >/dev/sdb1 && cat /dev/sdd1 >/dev/sde1
. Menggabungkan kedua bagian itu tidak masuk akal. Jika Anda ingin mengubah struktur volume btrf, untuk mengubahnya dari memiliki dua subvolume menjadi satu, Anda perlu menggunakan alat btrf untuk mengubah struktur, atau seperti yang Anda lakukan untuk membuat sistem file baru dengan struktur yang diinginkan dan menyalin file. .dd
menggunakan blocksize yang sangat kecil secara default (512 byte). Itu menghasilkan banyak overhead (saturead()
danwrite()
syscall untuk setiap 512 byte).Ini berjalan jauh lebih cepat ketika Anda menggunakan ukuran blok yang lebih besar. Kecepatan optimal dimulai pada
bs=64k
atau lebih. Kebanyakan orang menggunakan yang masih lebih besarbs=1M
sehingga menjadi dapat dibaca manusia (ketikadd
mengatakan itu disalin1234 blocks
, Anda tahu itu1234 MiB
tanpa melakukan matematika apa pun). Menggunakan blocksize yang lebih besar tidak akan menghasilkan peningkatan kecepatan, hanya konsumsi memori yang lebih tinggi.Jadi perintahnya adalah:
Jika Anda sudah
dd
berjalan lambat , Anda dapat menghentikannya dan melanjutkan dengandd
instance yang lebih cepat . Untuk ini, penting untuk mengetahui sejauh mana salinan telah berkembang.dd
biasanya mencetak progres ketika Anda membatalkannya, atau Anda dapat mengirimkannyaUSR1
sinyal saat sedang berjalan untuk membuatnya mencetak progresnya.Misalnya, jika disalin lebih dari
1234MiB
, Anda dapat melanjutkan pada posisi1234MiB
menggunakan:Jika salinannya kurang dari
1234MiB
, salinan Anda tidak akan lengkap. Jika disalin lebih dari1234MiB
, itu akan menyalin ulang beberapa bagian yang sudah disalin, yang biasanya tidak membahayakan. Jadi jika ragu Anda harus memilih nilai yang sedikit lebih kecil dari yang Anda yakini sudah disalin.sumber
Mendapatkan statistik tentang proses dd yang sedang berlangsung
Anda dapat menggunakan
kill
perintah dengan sinyal yang sesuai untuk membuatdd
statistik output menjadi kesalahan standar.Dari halaman manual GNU dd:
Pastikan Anda memeriksa halaman manual Anda untuk sinyal yang benar terlebih dahulu karena mungkin berbeda pada implementasi dd yang berbeda: (BSD dd menggunakan SIGINFO).
Mempercepat proses
bs=
argumen. Lihatlah utas ini pada pengguna super dan coba beberapa nilai untuk Anda sendiri.dd
doa terpisah untuk membaca dan menulis dan menggunakan pipa untuk menghubungkan mereka (dd if=/dev/sda bs=1M | dd of=/dev/sdb bs=1M
).Jika Anda melakukan ini dan menentukan ukuran blok, pastikan Anda menggunakan ukuran blok yang sama pada setiap doa.
direct
argumen.sumber
Sudahkah Anda mencoba 'gparted'? Anda benar-benar dapat menyalin-menempel partisi dari satu drive ke drive lain dan mengubah ukurannya sesuai kebutuhan. Anda mendapatkan tingkat transfer dan waktu yang tersisa. Ini menggunakan 'e2image' di bawahnya untuk partisi linux.
sumber
Ada perangkat lunak komersial yang disebut HDClone . Ini dilisensikan sebagai freeware dan komersial. Versi mana pun dapat membuat pendrive atau DVD yang dapat di-boot, serta menyalin disk. Hubungkan HD sumber dan tujuan dan ikuti instruksi berbasis GUI.
Yang gratis akan ditransfer dengan kecepatan sekitar 80MB / detik, sementara versi berbayar bisa lebih cepat. Untuk sistem file NTFS dan FAT, versi berbayar dapat dikonfigurasikan untuk mengkloning hanya bit HD yang terisi, yang secara dramatis meningkatkan kecepatan setiap klon.
sumber