วิธีที่ดีที่สุดในการโคลนดิสก์ระหว่าง Macs สองเครื่องคืออะไร


25

วิธีที่ดีที่สุดในการโคลนดิสก์ระหว่าง Macs สองเครื่องคืออะไร ฉันถามสิ่งนี้ทุกสองสามปีหรือมากกว่านั้นและทุกครั้งที่ฉันได้รับคำตอบเดียวกัน "ใช้Carbon Copy Cloner " พวกเขาพูด แต่ความจริงที่โชคร้ายคือ CCC เป็นสำเนาระดับไฟล์ระหว่างดิสก์ เมื่อฉันย้ายไปยัง Mac เครื่องใหม่ของฉันตรวจสอบว่าไฟล์ทั้งหมดอยู่ที่นั่น แต่มีข้อผิดพลาดที่นี่และที่นั่น (รวมถึงวันที่ไฟล์จะแตกต่างกัน ฯลฯ )

ดังนั้นตอนนี้จริง ๆ อีกครั้ง: คุณโคลนดิสก์ผ่านไบต์ต่อไบต์ได้อย่างไร

คำตอบ:


44

คุณสามารถใช้คำสั่งddเพื่อสร้างการโคลนที่สมบูรณ์แบบของไดรฟ์ มันเป็นเครื่องมือบรรทัดคำสั่งที่มาพร้อมกับ OS X เพื่อให้การโคลนสมบูรณ์แบบคุณต้องมั่นใจว่าต้นทางและปลายทางไม่ได้ใช้งาน

เพื่อเตรียมพร้อมสำหรับการโคลนฉันขอแนะนำให้สร้างดิสก์สำหรับบูตรองที่คุณสามารถบูทได้ แหล่งที่มาของคุณสำหรับโคลนควรเป็นไดรฟ์ข้อมูลแบบออฟไลน์ไม่ได้ใช้งานเมื่อคุณกำลังทำสำเนา มิฉะนั้นคุณอาจเสี่ยงต่อการคัดลอกสิ่งต่าง ๆ ที่อยู่ในสถานะไม่สมบูรณ์บนดิสก์

เมื่อเครื่องของคุณบูทไปยังดิสก์สำหรับเริ่มระบบรองให้ลงชื่อเข้าใช้และเปิดหน้าต่าง Terminal หรือ iTerm ขึ้น

เรียกใช้diskutilเพื่อรับรายการไดรฟ์ที่มีอยู่ของคุณ หนึ่งในนั้นคือไดรฟ์เป้าหมายที่คุณพยายามโคลน อีกอันจะเป็นไดรฟ์ต้นทางของคุณ ตัวอย่างเช่น:

> 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

สมมติว่าMacintosh HDเป็นแหล่งที่มาและCloneเป็นเป้าหมายสำหรับddการดำเนินงานของเรา เริ่มโคลนด้วย:

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

เมื่อddเสร็จสิ้นคุณอาจเห็นข้อผิดพลาดดังนี้:

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)

ข้อความแสดงข้อผิดพลาดครั้งสุดท้ายนั้นไม่เป็นไร บล็อกสุดท้ายที่เขียนนั้นเป็นบล็อกสั้น ๆ เนื่องจากไม่มีบล็อกเต็ม 1MB ที่จะคัดลอก ไม่ต้องห่วง.

ตอนนี้คุณได้โคลนMacintosh HDไดรฟ์ที่สมบูรณ์แบบของคุณแล้ว รีบูตระบบของคุณโดยใช้Macintosh HDไดรฟ์และเพลิดเพลินไปกับการโคลนของคุณ!


4
rdisk # ผ่านบัฟเฟอร์ 4KB OS ข้อมูลเพิ่มเติม. ฉันขอแนะนำให้คุณเลือกขนาดที่เล็กลงbsเพราะจะสูงกว่า 1 ม. ทำให้ช้าลง (อย่างน้อยผ่าน USB ฉันไม่สามารถบอกได้ว่ามันเป็นไดรฟ์ USB ภายนอกหรือการเชื่อมต่อ SATA โดยตรง)
Nick ODell

2
มันอาจจะคุ้มค่าที่จะทดลองสักเล็กน้อยกับการตั้งค่า bs ฉันเพิ่มปริมาณงานอย่างมาก (เกือบสองเท่า) โดยลดขนาดจาก bs = 1m เป็น bs = 65536
Jens Wegar

1
@ JensWegar ฉันสงสัยว่ามีวิธีที่จะรู้ขนาดบล็อกที่ดีที่สุดddสำหรับการถ่ายโอนที่กำหนดโดยไม่ต้องหันไปพึ่งการค้นหาทางอินเทอร์เน็ตหรือใช้เส้นทางที่ผิดพลาดหรือไม่?
Ian C.

2
@IanC ฉันอ่านบางที่ว่าขนาดบล็อกของ HDD สามารถใช้เป็นตัวบ่งชี้ขนาดที่เหมาะสมที่สุดในการให้ dd ในอีกแหล่งหนึ่งกล่าวว่าไม่มีวิธีพิสูจน์กระสุนเพื่อหาขนาดที่เหมาะสม ดังนั้นไม่สามารถให้คำแนะนำจริง ๆ ได้ อย่างไรก็ตามการทดสอบใช้เวลาไม่นาน อาจเป็นไปได้ว่าค่าในอุดมคติคือปัจจัย 2 ดังนั้นฉันจะเริ่มด้วย 4096 จากนั้น 8192, 16384 และต่อไป คุณจะพบจุดสูงสุดได้อย่างรวดเร็วด้วยวิธีนี้
Jens Wegar

1
@ user3.1415927 คุณสามารถใช้status=progressตัวเลือกของddเพื่อดูความคืบหน้าและอัตราการถ่ายโอน จากนั้นคุณสามารถยกเลิกCRTL+Cและลองด้วยค่าอื่นสำหรับbs
Wlad

14

แอปเปิ้ลเป็น bespoke asrอรรถประโยชน์บรรทัดคำสั่งที่จะทำโคลนนิ่งดิสก์

มันได้รับการปรับแต่งให้ตรงกับความต้องการเฉพาะของ OS X เพื่อดำเนินการตามไฟล์เช่นเดียวกับการถ่ายภาพบล็อกและข้อเสนอที่มีความแตกต่างในขนาดพาร์ติชันช่วยให้เครือข่ายสตรีมมิ่ง (และสตรีมมัลติคาสต์) ต่างจากที่ddรู้เกี่ยวกับการจัดการปริมาณหน่วยเก็บข้อมูลล่าสุดของ Apple และเป็นโปรแกรมที่ Disk Utility กราฟิกเรียกให้ย้ายข้อมูลจากพาร์ทิชันหรือไดรฟ์ข้อมูลหนึ่งไปยังอีก

คุณสามารถอ่านเพิ่มเติมได้ที่หน้าคู่มือสำหรับ ASR


2
โปรดทราบว่าasrเป็นเครื่องมือเดียวกับที่แท็บ Restore Disk ใช้ (ดูคำตอบของฉัน) อินเตอร์เฟสบรรทัดรับคำสั่งมีตัวเลือกเพิ่มเติมที่อินเตอร์เฟส GUI ละเว้นเช่นการแปลงระหว่างรูปแบบ HFS ​​+ (case insensitive) และรูปแบบ HFSX (คำนึงถึงขนาดตัวพิมพ์) และวางสำเนาในกลุ่มวอลุ่มหน่วยเก็บข้อมูลหลัก แต่มันอาจจะยากสำหรับผู้ที่ไม่คุ้นเคยกับบรรทัดคำสั่ง
Gordon Davisson

ลิงก์ไม่ถูกต้อง .......
เกม Traderhut

ไม่แน่ใจว่า archive.org หรือลิงค์ใหม่เป็นวิธีที่จะไปที่นี่หรือไม่ web.archive.org/web/20150923065146/https://developer.apple.com/ขอขอบคุณ @TraderhutGames
bmike

FYI: ฉันได้รับการเขียน 122 MB / วินาทีโดยใช้ dd และขนาดบล็อก 64K ฉันฆ่าที่เปลี่ยนเป็น asr ทำ - คืนค่าการคืนค่า - แหล่ง / ปริมาณ / X / - เป้าหมาย / ปริมาณ / Y - ลบและฉันต้องบอกว่าฉันประทับใจ - verbose แสดงให้ฉันเห็นว่าไม่มีอะไรในแง่ของสถิติ (DD มีตัวเลือก Ctrl / T เพื่อแสดงความคืบหน้า) - บางทีฉันต้องทำ --verbose ในตอนท้าย ... ไม่มีน้อยฉันประทับใจ ฉันได้รับ 134 MB / วินาทีอ่านและเขียนโดยใช้ DD และ asr กำลังเตะที่ 25MB / วินาที ดังนั้นแทนที่จะถ่ายสำเนาใช้เวลา 4 ชั่วโมง ... ฉันดูที่ 21 ชั่วโมง! ใช่ฉันไม่รู้ว่ามันมีโอกาสในการทำงานที่สูงขึ้นหรือไม่
Traderhut Games

แต่ฉันสามารถทำการทดสอบกับ dd ก่อนแล้วถ้ามันล้มเหลวให้ใช้เวลาหนึ่งวันในการคัดลอก 2TB จากดิสก์หนึ่งไปยังอีกอันโดยใช้ asr ...
Traderhut Games

8

ยูทิลิตี้ดิสก์สามารถทำการโคลนแบบโวลุ่ม - ทู - โวลุ่มด้วยแท็บกู้คืน ระหว่างสองโวลุ่มของ Mac OS Extended สิ่งนี้จะทำการคัดลอกบล็อกนั่นคือมันเพียงแค่คัดลอกโครงสร้างวอลุ่มดังนั้นไฟล์ทั้งหมดจึงออกมาเหมือนกัน (ลงไปที่หมายเลข ID ไฟล์) สิ่งนี้เป็นสิ่งเดียวกับที่ddทำยกเว้นว่า Disk Utility สามารถขยาย / หดไดรฟ์ข้อมูลหากปลายทางไม่ได้มีขนาดเท่ากับแหล่งที่มาและมันเร็วกว่ามาก (ด้วยเหตุผลบางอย่างddค่อนข้างช้าใน OS X)

แก้ไข: หลังจากเห็นข้อความของ @ Ian เกี่ยวกับความเร็วในการใช้ / dev / rdiskN เทียบกับ / dev / diskN ฉันใช้งานมาตรฐานที่รวดเร็วและสกปรกในการคัดลอกระหว่างแฟลชไดรฟ์ 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

ดังนั้นดูเหมือนว่าคำแนะนำ rdisk ทำให้ dd ทำงานด้วยความเร็วเท่ากับ Disk Utility ความแตกต่างที่แท้จริงคือ Disk Utility ตรวจสอบข้อมูล (ช้ากว่า แต่อาจปลอดภัยกว่า) และข้ามพื้นที่ว่าง (เร็วกว่าหากดิสก์ไม่เกือบเต็ม) นั่นและอย่างที่ฉันได้กล่าวไว้ข้างต้น DU สามารถปรับขนาดได้ตามที่คัดลอก


1
ยูทิลิตี้ดิสก์สำหรับ OS X เป็นเอกสารที่docs.info.apple.com/article.html?path=DiskUtility/10.5/en/...
KatieK

8

Verbose output จากddทางpv

ป้อนคำอธิบายรูปภาพที่นี่

การคัดลอกแม้แต่ดิสก์ขนาดเล็กอาจใช้เวลานานและความเงียบอาจทำให้หงุดหงิด หากคุณติดตั้งpv (ไปป์)คุณสามารถใช้มันเพื่อตรวจสอบความคืบหน้าของกระแสใด ๆ

หากคุณใช้homebrew (และคุณควรจะติดตั้ง) pvก็ง่ายเหมือน:

brew install pv

จากนั้นเลือกดิสก์ที่คุณต้องการคัดลอก

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

ในกรณีนี้/dev/disk2คือการ์ด Micro SD จาก Raspberry Pi ของฉันในเครื่องอ่านภายในและ/dev/disk3เป็น MicroSD ใหม่ในดองเกิล USB

คำสั่งในการคัดลอกมันจะคล้ายกับddคำสั่งทั่วไปยกเว้นว่าเราจะใช้ประโยชน์จากความจริงที่ว่าofค่าเริ่มต้น (ไฟล์เอาต์พุต) ไปที่ STDOUT และif(อินพุตไฟล์) เป็นค่าเริ่มต้นไปยัง STDIN สิ่งนี้อนุญาตให้คุณใช้ท่อยูนิกซ์ในระหว่างนั้น

# 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)

ผลลัพธ์ที่แท้จริงดูเหมือนว่า:

dd bs=1m if=/dev/zero count=16000 | pv | dd bs=1m of=/dev/null
16GiB 0:00:06 [2.46GiB/s] [       <=>                                          ]

2
หรือคุณสามารถกด Ctrl-T ในขณะที่รอ DD ให้เสร็จสมบูรณ์มันจะแสดงให้คุณเห็นว่ามันได้ทำไปแล้วและโหลดเร็วแค่ไหน .. : 2.25 cmd: dd 50443 ทำงาน 1.50u 55.87s 899897 + 0 บันทึกใน 899896 + 0 บันทึก 58975584256 ไบต์ที่ถ่ายโอนใน 473.978101 วินาที (124426812 ไบต์ / วินาที)
Traderhut Games

4

ตัวเลียนแบบ Carbon นั้นดี แต่แล้วใน Mac Pro ของฉันมันไม่ได้ทำโคลนนิ่งที่สามารถบู๊ตได้อีกต่อไปฉันลองมัน 3 ครั้งและโคลนทุกอันไม่สามารถบู๊ตได้เหมือนก่อนหน้านี้ ดังนั้นฉันเปลี่ยนเป็น SuperDuper! และโคลนนั้นก็ใช้การได้ดี


1
คำตอบของเขารวมถึงคำอธิบาย: Carbon Copy เลิกทำงานอธิบายว่าทำไมเขาถึงเปลี่ยนสิ่งที่เขาเปลี่ยนไปและมันใช้งานได้ ดีและรัดกุม สามนิ้วโป้งขึ้น! ฉันไม่ต้องการอ่านหนังสือขนาดยาวเพื่อรับ 'ลอง SuperDuper! - ใช้งานได้ '- เมื่อนั่นคือทั้งหมดที่ฉันต้องการ
Traderhut Games

0

วิธีการเกี่ยวกับดี ol' ddล้าสมัย มันสามารถทำสำเนาของไดรฟ์ทีละบิต มีคำแนะนำมากมายเกี่ยวกับวิธีการทำเช่นนี้หรืออันนี้


2
รู้รอบบน Ask Different จะต้องเป็นมากกว่าแค่ลิงค์ มันไม่เป็นไรที่จะรวมลิงค์ แต่โปรดสรุปหรือตัดตอนมาในคำตอบ ความคิดคือการทำให้คำตอบยืนอยู่คนเดียว
nohillside

-3

การโคลน Mac Drive มีสองประเภท การโคลนตามระดับไฟล์และบล็อก อย่างที่เรารู้กันว่า carbon copy cloner สามารถสร้างโคลนตามระดับไฟล์เท่านั้นและหนึ่งในคู่แข่งที่ยิ่งใหญ่ Superduper สามารถสร้างโคลนของไดรฟ์และพาร์ทิชันไม่เพียง แต่ดิสก์ทั้งหมด ดังนั้นฉันจะแนะนำให้ใช้ซอฟต์แวร์โคลน Mac ที่เพิ่งเกิดขึ้นใหม่นั่นคือ Stellar Drive Clone ที่สามารถทำการโคลนทั้งระดับไฟล์และระดับบล็อกได้

มันสามารถสร้างสำเนาที่แน่นอนของไดรฟ์ทั้งหมดของคุณและไดรฟ์ข้อมูลเฉพาะบนไดรฟ์ภายนอกไดรฟ์ข้อมูลและไดรฟ์เครือข่ายของคุณได้เช่นกัน มันสามารถสร้างโคลนของไดรฟ์ในโฟลเดอร์และกู้คืนการสำรองข้อมูลได้จากคุณสมบัติการสาธิตรุ่นฟรี มันสามารถสร้างโคลนของการกู้คืน HD และสนับสนุนรูปแบบไฟล์หน้าต่าง, MBR, ExFAT, FAT32 และอื่น ๆ บน Mac ของคุณ


1
ดังที่เขียนไว้ในคำตอบของคุณไม่มากไปกว่ารายการคุณลักษณะของผลิตภัณฑ์ แต่ไม่มีคำอธิบายใด ๆ เกี่ยวกับวิธีที่เครื่องมือดังกล่าวสามารถแก้ไขปัญหาที่ OP มีได้ คุณช่วยทำให้คำตอบของคุณมีประโยชน์มากขึ้นโดยการอธิบายขั้นตอนที่จำเป็นในรายละเอียดเพิ่มเติม (และอาจอธิบายว่าประโยชน์ใดที่วิธีนี้เทียบกับคำอธิบายอื่น ๆ ในคำตอบอื่น ๆ )
nohillside
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.