Apa cara terbaik untuk mengkloning disk antara dua Mac?

25

Apa cara terbaik untuk mengkloning disk antara dua Mac? Saya menanyakan hal ini setiap beberapa tahun sekali dan setiap kali saya mendapatkan jawaban yang sama. "Gunakan Carbon Copy Cloner ", kata mereka. Tetapi fakta yang tidak menguntungkan adalah bahwa CCC adalah salinan level file antara disk. Ketika saya bermigrasi ke Mac baru saya, pasti semua file ada tetapi ada kebiasaan di sana-sini (termasuk tanggal file menjadi berbeda dll).

Jadi, sungguh sekarang, sekali lagi: bagaimana Anda mengkloning disk lebih dari byte ke byte?

erotsppa
sumber

Jawaban:

44

Anda dapat menggunakan perintah dd untuk membuat tiruan drive yang sempurna. Ini adalah alat baris perintah yang dikirimkan dengan OS X. Untuk membuat klon sempurna Anda harus memastikan sumber dan tujuan tidak aktif digunakan.

Untuk mempersiapkan kloning, saya sarankan untuk membuat disk boot sekunder tempat Anda dapat boot. Sumber Anda untuk klon harus berupa volume offline, tidak digunakan, saat Anda membuat salinan. Kalau tidak, Anda berisiko menyalin hal-hal yang dalam keadaan tidak lengkap pada disk.

Dengan mesin Anda di-boot ke disk boot sekunder Anda, masuk dan nyalakan jendela Terminal atau iTerm.

Jalankan diskutil untuk mendapatkan daftar drive yang tersedia. Salah satunya akan menjadi drive target Anda yang ingin Anda tiru. Yang lain akan menjadi drive sumber Anda. Sebagai contoh:

> diskutil list
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *320.1 GB   disk0
   1:                        EFI                         209.7 MB   disk0s1
   2:                  Apple_HFS Macintosh HD            319.2 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3       
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.1 GB   disk1
   1:                        EFI                         209.7 MB   disk1s1
   2:                  Apple_HFS Backup                  499.8 GB   disk1s2
/dev/disk2
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.1 GB   disk2
   1:                        EFI                         209.7 MB   disk2s1
   2:                  Apple_HFS Clone                   499.8 GB   disk2s2

Katakanlah itu Macintosh HDadalah sumber dan Clonetarget ddoperasi kami . Mulai klon dengan:

> sudo dd if=/dev/rdisk0 of=/dev/rdisk2 bs=1m conv=noerror,sync

Ketika ddselesai Anda mungkin melihat kesalahan seperti ini:

dd: /dev/rdisk2: short write on character device
dd: /dev/rdisk2: Input/output error
3726+1 records in
3726+1 records out
500107862016 bytes transferred in 14584.393113 secs (34290619 bytes/sec)

Pesan kesalahan terakhir itu sebenarnya baik-baik saja. Blok terakhir yang ditulis adalah blok pendek karena tidak ada blok 1MB penuh untuk disalin. Jangan khawatir.

Sekarang Anda memiliki tiruan sempurna dari Macintosh HDdrive Anda . Nyalakan ulang sistem Anda menggunakan Macintosh HDdrive dan nikmati klon Anda!

Ian C.
sumber
4
rdisk # mem-bypass buffer OS 4KB. Info lebih lanjut. Saya menyarankan agar Anda memilih yang lebih kecil bs, karena pergi di atas 1 m sebenarnya membuatnya lebih lambat. (Setidaknya melalui USB. Saya tidak tahu apakah itu drive USB eksternal atau koneksi SATA langsung.)
Nick ODell
2
Mungkin perlu sedikit bereksperimen dengan pengaturan bs. Saya mendapat peningkatan yang signifikan dalam throughput (hampir dua kali lipat) dengan mengurangi ukuran dari bs = 1m ke bs = 65536.
Jens Wegar
1
@JensWegar Saya bertanya-tanya apakah ada cara untuk mengetahui ukuran blok terbaik untuk diberikan dduntuk transfer yang diberikan tanpa harus menggunakan pencarian internet yang terpercaya atau melakukan jejak dan kesalahan?
Ian C.
2
@IanC. Saya membaca di suatu tempat bahwa ukuran blok HDD dapat digunakan sebagai indikator ukuran ideal untuk diberikan dd. Di sisi lain sumber lain mengatakan tidak ada cara anti peluru untuk mencari tahu ukuran optimal. Jadi tidak bisa memberikan saran nyata di sana. Namun, tidak terlalu lama untuk bereksperimen. Mungkin nilai ideal adalah faktor 2, jadi saya akan mulai dengan 4096, lalu 8192, 16384, dan seterusnya. Anda akan menemukan puncaknya dengan cepat seperti ini.
Jens Wegar
1
@ user3.1415927 Anda dapat menggunakan status=progressopsi dduntuk melihat progres dan kecepatan transfer. Kemudian Anda dapat membatalkan dengan CRTL+Cdan mencoba dengan nilai lain untukbs
Wlad
14

Utilitas baris perintah bespoke Apple untuk melakukan kloning disk adalah asr.

Hal ini dirancang khusus untuk kebutuhan OS X untuk melakukan file per file serta pencitraan berbasis blok dan menangani perbedaan dalam ukuran partisi, memungkinkan streaming jaringan (dan bahkan streaming multicast) serta menyalin antar disk yang terhubung secara lokal. Tidak seperti dditu, ia tahu tentang manajemen volume Core Storage terbaru Apple dan merupakan program yang diserukan oleh Disk Utility grafis untuk memindahkan data dari satu partisi atau volume ke yang lain.

Anda dapat membaca lebih lanjut di halaman buku panduan untuk asr .

bmike
sumber
2
Perhatikan bahwa asrini adalah alat yang sama yang digunakan tab Kembalikan Disk Utility (lihat jawaban saya). Antarmuka baris perintah memiliki opsi tambahan yang dihilangkan antarmuka GUI, seperti mengkonversi antara format HFS + (case-sensitive) dan HFSX (case-sensitive), dan menempatkan salinan dalam grup volume Penyimpanan Inti. Tetapi mungkin lebih sulit digunakan untuk orang yang tidak terbiasa dengan baris perintah.
Gordon Davisson
Tautan buruk .......
Traderhut Games
Tidak yakin apakah archive.org atau tautan baru adalah cara untuk pergi ke sini. web.archive.org/web/20150923065146/https://developer.apple.com/... Terima kasih @TraderhutGames
bmike
FYI: Saya mendapatkan penulisan 122 MB / detik menggunakan dd dan ukuran blok 64K, saya membunuh itu untuk beralih ke asr, melakukan --balik mengembalikan --sumber / Volume / X / -target / Volume / Y - hapus dan saya harus mengatakan saya terkesan. --verbose tidak menunjukkan statistik apa pun kepada saya (DD memiliki opsi Ctrl / T untuk menunjukkan kepada Anda kemajuan) - mungkin saya perlu melakukan --verbose pada akhirnya ... Tidak kurang, saya terkesan. Saya mendapatkan 134 MB / detik membaca dan menulis menggunakan DD, dan ASR menendang 25MB / detik. Jadi, alih-alih menyalin 4 jam ... Saya melihat 21 Jam! Ya, saya tidak tahu apakah ini memiliki peluang lebih tinggi untuk bekerja, tetapi
Traderhut Games
tapi saya bisa melakukan tes dengan dd pertama, dan kemudian jika gagal, biarkan satu hari untuk menyalin 2TB dari satu disk ke yang lain menggunakan asr ...
Traderhut Games
8

Disk Utility dapat melakukan kloning volume-ke-volume dengan tab Pulihkan. Di antara dua volume Mac OS Extended, ini akan melakukan salinan blok, yaitu hanya menyalin struktur volume, sehingga semua file keluar identik (ke nomor ID file). Ini pada dasarnya adalah hal yang sama dd, kecuali bahwa Disk Utility dapat memperluas / mengontrak volume jika tujuan tidak persis ukuran yang sama dengan sumbernya, dan itu jauh lebih cepat (untuk beberapa alasan, ddcukup lambat pada OS X).

EDIT: Setelah melihat catatan @ Ian tentang kecepatan menggunakan / dev / rdiskN vs. / dev / diskN, saya menjalankan beberapa tolok ukur cepat & kotor menyalin antara dua drive flash 4GB:

dd using /dev/diskN: 2737 seconds
dd using /dev/rdiskN: 907 seconds
Disk Util, full volume: 840 seconds to copy + 213 seconds to verify
Disk Util, empty volume: 4 seconds to copy + 1 second to verify

Jadi sepertinya saran rdisk membuat dd berjalan dengan kecepatan yang sama dengan Disk Utility; perbedaan sebenarnya adalah bahwa Disk Utility memverifikasi datanya (lebih lambat, tetapi mungkin lebih aman) dan melompati ruang kosong (lebih cepat jika disk hampir tidak penuh). Itu, dan seperti yang saya katakan di atas DU dapat mengubah ukuran saat salinan.

Gordon Davisson
sumber
1
Disk Utility untuk OS X didokumentasikan di docs.info.apple.com/article.html?path=DiskUtility/10.5/en/… .
KatieK
8

Keluaran verbal dari ddviapv

masukkan deskripsi gambar di sini

Menyalin bahkan disk kecil bisa memakan waktu lama dan keheningan bisa membuat frustasi. Jika Anda menginstal pv (penampil pipa), Anda dapat menggunakannya untuk memantau kemajuan aliran apa pun.

Jika Anda menggunakan homebrew (dan seharusnya) menginstalnya pvsemudah:

brew install pv

Kemudian tentukan disk mana yang ingin Anda salin.

diskutil list
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *251.0 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:          Apple_CoreStorage SSD                     250.1 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3

/dev/disk1 (internal, virtual):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                            SSD                    +249.8 GB   disk1
                                 Logical Volume on disk0s2
                                 2CFBB247-D59D-474F-8467-2B1BDB275524
                                 Unencrypted

/dev/disk2 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *15.6 GB    disk2
   1:             Windows_FAT_32 boot                    43.0 MB    disk2s1
   2:                      Linux                         15.5 GB    disk2s2

/dev/disk3 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *15.6 GB    disk3
   1:             Windows_FAT_32 NO NAME                 15.6 GB    disk3s1

Dalam hal ini /dev/disk2adalah kartu Micro SD dari Raspberry Pi saya di pembaca internal dan /dev/disk3merupakan MicroSD baru dalam dongle USB.

Perintah untuk menyalinnya akan sangat mirip dengan ddperintah umum kecuali kita akan mengambil keuntungan dari kenyataan bahwa of(file output) default ke STDOUT dan if(input file) default ke STDIN. Ini memungkinkan Anda untuk menggunakan pipa unix di antaranya.

# I'm going to define variables to make your copy-paste easier
SRC=/dev/rdisk2
DST=/dev/rdisk3

# This is the command you want
sudo dd bs=1m if=$SRC | pv | sudo dd bs=1m of=$DST

# Notice how similar this is to doing a simple
sudo dd bs=1m if=$SRC |      sudo dd bs=1m of=$DST

# ...which is functionally identical to
sudo dd bs=1m if=$SRC                      of=$DST

# (except 2 processes vs. 1)

Output aktual terlihat seperti:

dd bs=1m if=/dev/zero count=16000 | pv | dd bs=1m of=/dev/null
16GiB 0:00:06 [2.46GiB/s] [       <=>                                          ]
Bruno Bronosky
sumber
2
Atau, Anda dapat menekan Ctrl-T sambil menunggu DD selesai, itu akan menunjukkan kepada Anda berapa banyak yang telah dilakukan, dan seberapa cepat .. memuat: 2,25 cmd: dd 50443 menjalankan 1,50u 55,87s 899897 + 0 catatan di 899896 + 0 mencatat 58975584256 byte yang ditransfer dalam 473.978101 detik (124426812 byte / detik)
Traderhut Games
4

Carbon copy cloner bagus, tetapi kemudian pada Mac Pro saya tidak lagi membuat klon bootable, saya mencobanya 3 kali dan setiap klon gagal boot seperti sebelumnya. Jadi saya beralih ke SuperDuper! dan klon itu boot dengan baik

Jig
sumber
1
Jawabannya mencakup penjelasan: Carbon Copy berhenti bekerja, menjelaskan mengapa ia beralih, beralih ke apa, dan berhasil. Bagus dan ringkas. Tiga jempol! Saya tidak ingin membaca buku panjang untuk mendapatkan 'coba SuperDuper! - itu berfungsi '- saat itulah yang saya butuhkan.
Traderhut Games
0

Bagaimana dengan pakaian bagus dd. Itu dapat membuat salinan drive Anda sedikit demi sedikit. Ada banyak panduan di luar sana tentang cara melakukan ini seperti ini atau ini

binarybob
sumber
2
Jawaban tentang Tanya yang berbeda harus lebih dari sekadar tautan. Tidak apa-apa untuk memasukkan tautan, tapi tolong rangkum atau kutip dalam jawabannya. Idenya adalah untuk membuat jawabannya berdiri sendiri.
nohillside
-3

Ada dua jenis kloning drive Mac. Kloning berdasarkan level file dan level blok. Seperti yang kita ketahui carbon copy cloner dapat membuat clone berbasis file level saja dan salah satu pesaing besarnya Superduper dapat membuat clone volume dan hanya partisi keseluruhan disk. Jadi, saya akan menyarankan untuk pergi untuk perangkat lunak kloning Mac baru yang muncul yaitu Stellar Drive Clone yang mampu baik tingkat file dan blok tingkat kloning.

Itu dapat membuat salinan yang tepat sedikit demi sedikit dari seluruh drive Anda dan volume tertentu pada drive eksternal, volume, dan drive jaringan Anda juga. Itu dapat membuat klon drive pada folder dan mengembalikan cadangan dari yang sama dalam fitur versi demo gratis. Itu dapat membuat klon HD pemulihan dan mendukung format file jendela, MBR, ExFAT, FAT32 dll di Mac Anda.

Crestine
sumber
1
Seperti tertulis jawaban Anda tidak lebih dari daftar fitur produk tetapi tanpa penjelasan tentang bagaimana alat tersebut dapat menyelesaikan masalah yang dimiliki OP. Bisakah Anda menjadikan jawaban Anda lebih bermanfaat dengan menjelaskan langkah-langkah yang diperlukan secara lebih terperinci (dan mungkin juga menjelaskan manfaat mana yang dibandingkan dengan metode yang dijelaskan dalam jawaban lain)?
nohillside