Qual è il modo migliore per clonare un disco tra due Mac?


25

Qual è il modo migliore per clonare un disco tra due Mac? Lo chiedo ogni due anni circa e ogni volta che ottengo la stessa risposta. "Usa Carbon Copy Cloner ", dicono. Ma il fatto spiacevole è che CCC è una copia a livello di file tra i dischi. Quando eseguo la migrazione al mio nuovo Mac, accertarsi che tutti i file siano presenti, ma che ci siano delle stranezze qua e là (anche se le date dei file sono diverse, ecc.).

Quindi, davvero adesso, ancora una volta: come si clona il disco su byte per byte?

Risposte:


44

È possibile utilizzare il comando dd per creare un clone bit-perfect di un'unità. È uno strumento da riga di comando fornito con OS X. Per rendere perfetto il clone devi assicurarti che l'origine e la destinazione non siano attivamente in uso.

Per preparare il clone, consiglio di creare un disco di avvio secondario da cui è possibile eseguire l'avvio. La fonte per il clone dovrebbe essere un volume offline, non in uso, quando si effettua la copia. Altrimenti si rischia di copiare elementi che si trovano in stati incompleti sul disco.

Con il computer avviato sul disco di avvio secondario, accedere e avviare una finestra Terminale o iTerm.

Esegui diskutil per ottenere un elenco delle unità disponibili. Uno di questi sarà il tuo target drive che stai cercando di clonare. L'altro sarà l'unità sorgente. Per esempio:

> 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

Diciamo che Macintosh HDè la fonte ed Cloneè l'obiettivo della nostra ddoperazione. Inizia il clone con:

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

Al ddtermine potresti visualizzare un errore come questo:

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)

L'ultimo messaggio di errore è effettivamente a posto. L'ultimo blocco scritto era un breve blocco perché non c'era un blocco completo da 1 MB da copiare. Nessun problema.

Ora hai un clone un po 'perfetto del tuo Macintosh HDdisco. Riavvia il sistema utilizzando l' Macintosh HDunità e goditi il ​​tuo clone!


4
rdisk # ignora un buffer del sistema operativo 4KB. Ulteriori informazioni. Ti consiglierei di sceglierne uno più piccolo bs, perché andare oltre 1 m in realtà lo rende più lento. (Almeno tramite USB. Non so dire se si tratta di un'unità USB esterna o di una connessione SATA diretta.)
Nick ODell,

2
Potrebbe valere la pena sperimentare un po 'con l'impostazione bs. Ho ottenuto aumenti significativi del throughput (quasi il doppio) diminuendo la dimensione da bs = 1m a bs = 65536.
Jens Wegar,

1
@JensWegar Mi chiedo se esiste un modo per conoscere la dimensione del blocco migliore da assegnare ddper un determinato trasferimento senza dover ricorrere a ricerche su Internet attendibili o a eseguire scie di errore?
Ian C.

2
@IanC. Ho letto da qualche parte che la dimensione del blocco dell'HDD potrebbe essere utilizzata come indicatore della dimensione ideale per dare dd. D'altra parte un'altra fonte ha detto che non esiste un modo a prova di proiettile per capire la dimensione ottimale. Quindi non posso dare alcun consiglio reale lì. Tuttavia, non ci è voluto molto tempo per sperimentare. Probabilmente il valore ideale è un fattore 2, quindi inizierei con 4096, quindi 8192, 16384 e così via. In questo modo troverai il picco abbastanza rapidamente.
Jens Wegar,

1
@ user3.1415927 puoi usare l' status=progressopzione di ddper vedere l'avanzamento e la velocità di trasferimento. Quindi puoi interrompere CRTL+Ce provare con un altro valore perbs
Wlad,

14

L'utilità della riga di comando su misura di Apple per eseguire la clonazione del disco è asr.

È adattato alle specifiche esigenze di OS X per eseguire file per file, nonché imaging basato su blocchi e gestisce le differenze nelle dimensioni delle partizioni, consente lo streaming di rete (e persino lo streaming multicast) e la copia tra dischi collegati localmente. Diversamente dd, è a conoscenza dell'ultima gestione del volume Core Storage di Apple ed è il programma che l'utilità grafica del disco chiama per spostare i dati da una partizione o volume a un'altra.

Puoi leggere di più nella pagina del manuale per asr .


2
Si noti che asrè lo stesso strumento utilizzato dalla scheda Ripristino di Utility Disco (vedere la mia risposta). L'interfaccia della riga di comando ha opzioni aggiuntive che l'interfaccia della GUI omette, come la conversione tra i formati HFS + (senza distinzione tra maiuscole e minuscole) e HFSX (con distinzione tra maiuscole e minuscole) e l'inserimento della copia in un gruppo di volumi di archiviazione principale. Ma potrebbe essere più difficile da usare per le persone che non sono abituate alla riga di comando.
Gordon Davisson,

Link
errato

Non sono sicuro se archive.org o un nuovo link siano la strada da percorrere qui. web.archive.org/web/20150923065146/https://developer.apple.com/… Grazie @TraderhutGames
bmike

Cordiali saluti: Stavo ricevendo scritture di 122 MB / sec usando dd e una dimensione del blocco di 64K, l'ho ucciso per passare ad asr, facendo un ripristino --verbose --source / Volumes / X / -target / Volumes / Y - cancella e devo dire che sono impressionato. --verbose non mi ha mostrato nulla in termini di statistiche (DD ha un'opzione Ctrl / T per mostrarti i progressi) - forse avrei dovuto fare il --verbose alla fine ... Nondimeno, sono impressionato. Stavo ricevendo 134 MB / sec in lettura e scrittura usando DD, e asr stava dando dei calci a 25 MB / sec. Quindi, invece della copia che impiega 4 ore ... Sto guardando 21 Hours! Sì, non so se ha maggiori possibilità di lavorare, ma
Traderhut Games,

ma prima posso fare un test con dd, e poi se fallisce, lascia che ci voglia un giorno per copiare 2 TB da un disco all'altro usando asr ...
Traderhut Games

8

Utility Disco può eseguire la clonazione da volume a volume con la scheda Ripristina. Tra due volumi estesi di Mac OS, verrà eseguita una copia a blocchi, ovvero copierà solo le strutture del volume, in modo che tutti i file risultino identici (fino ai numeri ID file). Questa è essenzialmente la stessa cosa dd, tranne che Utility Disco può espandere / contrarre il volume se la destinazione non ha esattamente le stesse dimensioni dell'origine ed è molto più veloce (per qualche motivo, ddè piuttosto lenta su OS X).

EDIT: Dopo aver visto la nota di @ Ian sulla velocità usando / dev / rdiskN vs. / dev / diskN, ho eseguito alcuni benchmark rapidi e sporchi copiando tra due unità flash da 4 GB:

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

Quindi sembra che il suggerimento di rdisk faccia funzionare dd alla stessa velocità di Utility Disco; le vere differenze sono che Utility Disco verifica i suoi dati (più lenti, ma forse più sicuri) e salta lo spazio vuoto (più veloce se il disco non è quasi pieno). Questo, e come ho detto sopra, DU può ridimensionare mentre copia.


1
L'utilità disco per OS X è documentata su docs.info.apple.com/article.html?path=DiskUtility/10.5/it/… .
KatieK,

8

Uscita dettagliata da ddviapv

inserisci qui la descrizione dell'immagine

Copiare anche un piccolo disco può richiedere molto tempo e il silenzio può essere frustrante. Se installi pv (pipe viewer) puoi usarlo per monitorare l'avanzamento di qualsiasi stream.

Se stai usando homebrew (e dovresti esserlo) l'installazione pvè facile come:

brew install pv

Quindi decidere quali dischi si desidera copiare.

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

In questo caso /dev/disk2è una scheda Micro SD del mio Raspberry Pi nel lettore interno ed /dev/disk3è una nuova MicroSD in un dongle USB.

Il comando per copiarlo sarà molto simile ai ddcomandi comuni , tranne per il fatto che of(file di output) viene impostato automaticamente su STDOUT e if(file di input) viene impostato su STDIN. Ciò ti consente di utilizzare i tubi unix in mezzo.

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

L'output effettivo è simile a:

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

2
Oppure, puoi premere Ctrl-T mentre attendi il completamento di DD, ti mostrerà quanto ha fatto e quanto velocemente .. caricamento: 2,25 cmd: dd 50443 in esecuzione 1,50u 55,87 s 899897 + 0 record in 899896 + 0 registra 58975584256 byte trasferiti in 473.978101 secondi (124426812 byte / sec)
Traderhut Games

4

Il cloner di Carbon Copy era buono, ma poi sul mio Mac Pro non creava più cloni avviabili, l'ho provato 3 volte e ogni clone non è riuscito ad avviarsi diversamente da prima. Quindi sono passato a SuperDuper! e quel clone si è avviato bene


1
La sua risposta includeva una spiegazione: Carbon Copy ha smesso di funzionare, ha spiegato che è il motivo per cui è passato, a cosa è passato e che ha funzionato. Bello e conciso. Tre pollici in su! Non voglio leggere un lungo libro per ottenere il 'prova SuperDuper! - Funziona "- quando era tutto ciò di cui avevo bisogno.
Giochi Traderhut,

0

Che ne dici di un buon vecchio stile dd. Può creare una copia bit per bit dell'unità. Ci sono molte guide là fuori su come fare questo come questo o questo


2
Risposte su Ask Diverso deve essere più di un semplice link. Va bene includere un link, ma per favore riassumilo o estrailo nella risposta. L'idea è di rendere la risposta indipendente.
Nohillside

-3

Esistono due tipi di clonazione dell'unità Mac. Clonazione basata su livello di file e livello di blocco. Come sappiamo, Carbon Copy Cloner può creare solo cloni a livello di file e il suo grande concorrente Superduper può creare cloni di volumi e partizionare non l'intero disco. Quindi, suggerirò di optare per un nuovo software emergente di clonazione per Mac che è Stellar Drive Clone in grado di clonare sia a livello di file sia a livello di blocco.

Può creare una copia esatta bit per bit dell'intera unità e di volumi particolari su qualsiasi unità esterna, volume e unità di rete. Può creare cloni di unità sulla cartella e ripristinare i backup dallo stesso nella sua versione demo gratuita. Può creare cloni di ripristino HD e supportare formati di file di finestre, MBR, ExFAT, FAT32 ecc. Sul tuo Mac.


1
Come scritto, la tua risposta non è molto più di un elenco di funzionalità del prodotto, ma senza alcuna spiegazione su come lo strumento menzionato possa risolvere il problema dell'OP. Potete per favore rendere la vostra risposta più utile descrivendo i passaggi necessari in modo più dettagliato (e forse anche spiegando quali vantaggi ha questo metodo rispetto a quelli descritti nelle altre risposte)?
Nohillside
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.