Как лучше всего клонировать диск между двумя компьютерами Mac?


25

Как лучше всего клонировать диск между двумя компьютерами Mac? Я спрашиваю это каждые пару лет или около того, и каждый раз я получаю один и тот же ответ. «Используйте Carbon Copy Cloner », говорят они. Но прискорбным фактом является то, что CCC является копией на уровне файлов между дисками. Когда я перехожу на свой новый Mac, убедитесь, что все файлы есть, но есть и причуды тут и там (включая разные даты файлов и т. Д.).

Итак, действительно сейчас, еще раз: как вы клонируете диск поверх байта за байтом?

Ответы:


44

Вы можете использовать команду dd, чтобы сделать идеальный клон диска. Это инструмент командной строки, который поставляется с OS X. Чтобы сделать клон идеальным, вам нужно убедиться, что источник и место назначения не используются активно.

Чтобы подготовиться к клонированию, я рекомендую создать дополнительный загрузочный диск, с которого вы можете загрузиться. Ваш источник для клона должен быть автономным томом, который не используется, когда вы делаете копию. В противном случае вы рискуете скопировать вещи, которые находятся в неполном состоянии на диске.

Загрузив компьютер на дополнительный загрузочный диск, войдите в систему и откройте окно терминала или 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)

Это последнее сообщение об ошибке на самом деле все в порядке. Последний записанный блок был коротким, потому что не было полного блока размером 1 МБ для копирования. Не стоит беспокоиться.

Теперь у вас есть немного идеальный клон вашего Macintosh HDдиска. Перезагрузите систему, используя Macintosh HDдиск, и наслаждайтесь клоном!


4
rdisk # обходит 4-килобайтный буфер ОС. Больше информации. Я бы посоветовал вам выбрать меньшее bs, так как подъем выше 1 м на самом деле делает его медленнее. (По крайней мере, через USB. Я не могу сказать, является ли это внешним USB-накопителем или прямым SATA-соединением.)
Ник ODell,

2
Возможно, стоит немного поэкспериментировать с настройкой bs. Я получил значительное увеличение пропускной способности (почти вдвое), уменьшив размер с bs = 1 м до bs = 65536.
Йенс Вегар

1
@JensWegar Интересно, есть ли способ узнать наилучший размер блока ddдля данного перевода, не прибегая к доверительным поискам в интернете или выполнению трассы с ошибками?
Ян С.

2
@IanC. Я где-то читал, что размер блока жесткого диска может быть использован в качестве индикатора идеального размера, чтобы дать дд. С другой стороны, другой источник сказал, что нет пуленепробиваемого способа определить оптимальный размер. Так что не могу дать никакого реального совета там. Тем не менее, это не заняло слишком много времени, чтобы экспериментировать. Вероятно, идеальным значением является коэффициент 2, поэтому я бы начал с 4096, затем 8192, 16384 и так далее. Таким образом, вы найдете пик довольно быстро.
Йенс Вегар

1
@ user3.1415927 вы можете использовать status=progressопцию, ddчтобы увидеть прогресс и скорость передачи. Затем вы можете прервать CRTL+Cи попробовать с другим значением дляbs
Wlad

14

Специальная утилита от Apple для командной строки для клонирования дисков asr.

Он адаптирован к специфике OS X, необходимой для выполнения файловых файлов, а также для создания блочных образов, и имеет дело с различиями в размерах разделов, позволяет осуществлять потоковую передачу по сети (и даже многоадресную потоковую передачу), а также копирование между дисками, которые подключены локально. В отличии dd, он знает о последнем управлении томами ядра хранения Apple, и это программа, графический Disk Utility требует , чтобы перенести данные из одного раздела или тома на другой.

Вы можете прочитать больше на странице руководства для asr .


2
Обратите внимание, что asrэто тот же инструмент, который используется на вкладке Восстановление Дисковой утилиты (см. Мой ответ). Интерфейс командной строки имеет дополнительные параметры, которые интерфейс GUI пропускает, такие как преобразование между форматами HFS + (без учета регистра) и HFSX (с учетом регистра) и помещение копии в группу томов Core Storage. Но это может быть сложнее для людей, которые не привыкли к командной строке.
Гордон Дэвиссон

Плохая ссылка .......
Игры Traderhut

Не уверен, что этот путь - это то, что архив.org или новая ссылка. web.archive.org/web/20150923065146/https://developer.apple.com/… Спасибо @TraderhutGames
bmike

К вашему сведению: я получал записи со скоростью 122 МБ / с, используя dd и размер блока 64 КБ, я убил это, чтобы переключиться на asr, выполнив --verbose restore --source / Volumes / X / -target / Volumes / Y - сотри, и я должен сказать, что впечатлен. --verbose ничего не показал мне с точки зрения статистики (у DD есть опция Ctrl / T, чтобы показать вам прогресс) - возможно, мне нужно было сделать --verbose в конце ... Тем не менее, я впечатлен. Я получал 134 МБ / с чтения и записи с использованием DD, а asr пинал со скоростью 25 МБ / с. Итак, вместо копии, занимающей 4 часа ... Я смотрю на 21 час! Да, я не знаю, есть ли у него больше шансов на работу, но
Traderhut Games

но я могу сначала выполнить тест с dd, а затем, если он не пройдёт, потратить один день, чтобы скопировать 2 ТБ с одного диска на другой, используя asr ...
Traderhut Games

8

Дисковая утилита может выполнять клонирование томов с томами с помощью вкладки «Восстановить». Между двумя томами Mac OS Extended это будет делать блочную копию, то есть просто копировать структуры томов, поэтому все файлы получаются одинаковыми (вплоть до идентификаторов файлов). По сути, это то же самое dd, за исключением того, что Дисковая утилита может расширять / сжимать том, если размер адресата не совпадает с размером источника, и он намного быстрее (по некоторым причинам ddдовольно медленный в OS X).

РЕДАКТИРОВАТЬ: После просмотра заметки @ Ian о скорости с использованием / dev / rdiskN по сравнению с / dev / diskN я запустил несколько быстрых и грязных тестов, копирующих между двумя 4 ГБ флешками:

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; настоящие различия заключаются в том, что Дисковая утилита проверяет свои данные (медленнее, но, возможно, безопаснее) и пропускает пустое пространство (быстрее, если диск почти не заполнен). Это, и, как я уже сказал выше, DU может изменить размер при копировании.


1
Дисковая утилита для OS X описана по адресу docs.info.apple.com/article.html?path=DiskUtility/10.5/en/… .
KatieK

8

Подробный вывод с ddпомощьюpv

введите описание изображения здесь

Копирование даже небольшого диска может занять много времени, и тишина может расстраивать. Если вы устанавливаете pv (pipe viewer), вы можете использовать его для мониторинга прогресса любого потока.

Если вы используете 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. Это позволяет вам использовать каналы Unix между ними.

# 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, он покажет вам, сколько он сделал и как быстро .. load: 2.25 cmd: dd 50443, работает 1.50u 55.87s 899897 + 0 записей в 899896 + 0 записывает 58975584256 байт, переданных за 473,978101 с (124426812 байт / с)
Traderhut Games

4

Клонер с копией был хорош, но потом на моем Mac Pro он больше не создавал загрузочных клонов, я пробовал его 3 раза, и каждый клон не загружался в отличие от ранее. Поэтому я перешел на SuperDuper! и этот клон загрузился нормально


1
Его ответ включал объяснение: Carbon Copy перестал работать, объяснил, почему он переключился, на что он переключился и что это сработало. Красиво и лаконично. Три пальца вверх! Я не хочу читать длинную книгу, чтобы попробовать SuperDuper! - это работает », - когда это было все, что мне было нужно.
Traderhut Games

0

Как насчет хорошего старомодного dd. Это может сделать побитовую копию вашего диска. Есть много руководств о том, как это сделать, например, этот или этот


2
Ответы на разные вопросы должны быть чем-то большим, чем просто ссылка. Это нормально, чтобы включить ссылку, но, пожалуйста, суммируйте или извлеките ее в ответе. Идея состоит в том, чтобы сделать ответ самостоятельно.
nohillside

-3

Существует два типа клонирования дисков Mac. Клонирование на уровне файлов и на уровне блоков. Как мы знаем, клонер с копией копий может создавать только клоны, основанные на уровне файлов, и его один из главных конкурентов Superduper может создавать клоны томов и разделов, а не весь диск. Итак, я предлагаю воспользоваться новым программным обеспечением для клонирования Mac, которое является Stellar Drive Clone, способным клонировать как на уровне файлов, так и на уровне блоков.

Он может создавать точную копию всего диска и отдельных томов на любом внешнем диске, томе и сетевом диске. Он может создавать клон диска в папке и восстанавливать резервные копии из него в бесплатной демо-версии. Он может создавать клон восстановления HD и поддерживать форматы файлов окон, MBR, ExFAT, FAT32 и т. Д. На вашем Mac.


1
Как написано, ваш ответ не намного больше, чем список возможностей продукта, но без объяснения того, как упомянутый инструмент может решить проблему, с которой сталкивается ОП. Не могли бы вы сделать свой ответ более полезным, описав необходимые шаги более подробно (и, возможно, также объяснив, какие преимущества дает этот метод по сравнению с теми, которые описаны в других ответах)?
nohillside
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.