GNU/Linux >> Linux Esercitazione >  >> Linux

Come clonare dischi con il comando dd di Linux

In questo tutorial faremo riferimento a un esempio pratico del comando dd di Linux che può essere utilizzato dagli amministratori di sistema per migrare o clonare un sistema operativo Windows o un sistema operativo Linux da un HDD più grande partizionato in stile layout MBR o GPT a un SSD più piccolo. In questo estratto useremo come esempio un sistema Windows installato su un disco rigido con più partizioni. Questo metodo può diventare piuttosto complicato nel caso in cui l'HDD sia partizionato nello schema MBR e contenga una partizione estesa con più partizioni logiche o le partizioni siano fuori servizio. Ti suggerisco di non utilizzare questo metodo se questo è il caso. In questi casi è più sicuro usare ddrescure che può clonare l'intero layout del disco (tabella delle partizioni e blocchi utilizzati all'interno di ciascuna partizione) senza trasferire effettivamente lo spazio vuoto. DDrescure può essere ottenuto installando il pacchetto gddrescue dai repository principali di Ubuntu.

PASSAGGIO UNO - Riduci partizione

Puoi ridimensionare una partizione Linux o Windows (riduci) a dimensioni minime utilizzando una distribuzione Linux live come Gparted o eseguire l'utilità GUI gparted dall'immagine ISO di Ubuntu Desktop Live. Altre distribuzioni Linux a pagamento che puoi utilizzare per manipolare le dimensioni del file system della partizione del disco (ext2, ext4, NTFS, xfs) sono Partition Wizard o Parted Magic . È inoltre possibile utilizzare l'utilità diskmgmt.msc di Microsoft Windows per ridurre una partizione NTFS. Riducendo lo spazio libero di una partizione, il tempo richiesto da dd per copiare i blocchi del disco non utilizzati, in caso di partizioni di grandi dimensioni, sarà drasticamente ridotto. In caso di una grande partizione con solo una piccola percentuale di spazio utilizzato è consigliabile ridurre il file system perché l'utilità dd copierà anche lo spazio inutilizzato nel processo (dd copierà anche tutti i blocchi liberi di una partizione da 100 GB o 1 TB che ha meno del 10% dello spazio utilizzato).

PASSAGGIO DUE - Clona dischi

Dopo che la partizione è stata ridimensionata al minimo, collegare fisicamente il secondo disco o SSD al controller SATA/SCSI ecc. della macchina e avviare la macchina con una distribuzione Live Linux. Una volta che la distribuzione Linux live è stata caricata nella RAM, apri una console Linux ed esegui fdisk -l /dev/sda (supponendo che /dev/sda sia il tuo disco di installazione di Windows o C:drive in ambiente Windows) e annota l'ultimo " End" (44898303 come mostrato nell'esempio seguente):

- Esempio uno - Clona disco MBR (sistema operativo Windows installato sulla seconda partizione)

In questo estratto i dischi sono invertiti, quindi /dev/sdb rappresenta l'installazione di Windows il disco e /dev/sda rappresenta l'SSD vuoto.

Quindi esegui il comando seguente con i privilegi di root per clonare il disco di installazione di Windows da HDD (/dev/sdb) a SSD (/dev/sda). L'utilità pv non è installata per impostazione predefinita in Ubuntu. Puoi installarlo eseguendo:

sudo apt install pv

Quindi avvia il processo di clonazione eseguendo il comando seguente:

sudo dd if=/dev/sdb bs=512 count=44898303 conv=sync,noerror | pv -s 21G |sudo dd of=/dev/sda

ATTENZIONE:il disco di destinazione deve avere almeno la dimensione dello spazio totale occupato da tutte le partizioni fino alla partizione Windows dal disco di origine, inclusa la partizione Windows.

Spiegazione del comando utilizzato nell'esempio precedente:

dd - dd sta per "Copia e converti". Alcuni potrebbero dire che sta per "Data Destroyer" (nel caso in cui si inganni il comando possono verificarsi seri danni) o Data Duplicate o Data Description. Usa la descrizione adatta alle tue esigenze!

if - il disco di origine (file in/input)

bs - Valore della dimensione del settore dall'output di fdisk (dimensione del blocco o numero di byte da leggere/scrivere una volta)

count - Ultimo settore "End" dall'output di fdisk incrementato di un intero (+1) - Quanti blocchi di 512 dimensioni devono essere copiati prima che si interrompa. Qui, dovrebbe trasferire 44099584 settori di 512 byte di dimensione.

conv=sync,noerror - sincronizza l'I/O e non interromperlo nel caso in cui si verifichino errori di blocco sul disco di origine

| - Pipe Linux (canale di comunicazione interprocesso in Linux o FIFO)

pv -s 21 GB - monitora l'avanzamento della clonazione - Dovrebbero essere trasferiti circa 21 GB attraverso la pipe

di - il disco di destinazione in cui vengono effettivamente scritti i dati convogliati (file di uscita/uscita)

Nel caso in cui desideri operare con una dimensione del blocco maggiore rispetto alla dimensione del blocco del disco standard (512), diciamo fino a quattro volte la dimensione del blocco standard (2048), per velocizzare le cose, puoi fare un semplice calcolo e moltiplicare per quattro la dimensione standard del blocco del disco (512x4) e quindi dividere per quattro il numero totale di blocchi +1 dell'ultima partizione.

Esempio:

In questo esempio, "End" di sda2 :44898303+1 diviso per 4. dd funzionerà con una dimensione del blocco di 2048 byte.

sudo dd if=/dev/sda bs=2048 count=44898303 conv=sync,noerror | pv -s 21G |sudo dd of=/dev/sdb

Al termine del processo (a seconda delle dimensioni e della velocità del disco possono essere necessari dieci minuti o addirittura ore) verifica il disco di destinazione utilizzando lo stesso comando sfdisk e confronta gli output di entrambi i dischi. I risultati dovrebbero essere simili.

- Esempio due - Clona disco GPT (sistema operativo Windows installato sulla quarta partizione)

In questo estratto, dd funzionerà con una dimensione del blocco fino a otto volte la dimensione del blocco standard (4096) per trasferire più blocchi contemporaneamente. Il sistema operativo Windows risiede nella quarta partizione del disco rigido. Anche tutte le partizioni Windows precedenti devono essere clonate. Il disco verrà copiato completamente fino all'ultimo settore 19855359, che rappresenta la fine del limite della partizione di Windows. I dati che seguono il settore 19855359+1 rappresentano la partizione D:in Windows, quindi questa partizione non ci interessa poiché vorremo solo clonare la partizione del sistema operativo.

Moltiplica per otto la dimensione standard del blocco del disco (512x8) e quindi dividi il numero totale di blocchi +1 dell'ultima partizione per otto come illustrato nell'immagine sottostante. La "Fine" di sda4 che rappresenta la partizione di Windows è 19855359+1 divisa per 8. dd opera con una dimensione del blocco di 4096 byte.

sudo dd if=/dev/sda bs=4096 count=2481920 conv=sync,noerror | pv -s 9G |sudo dd of=/dev/sdb

In questo esempio, poiché stiamo copiando solo il sistema operativo Windows e non tutti i dati del disco che seguono la quarta partizione, dobbiamo eliminare l'ultima partizione. Possiamo eliminarlo eseguendo l'utilità della riga di comando cgdisk direttamente dalla console come illustrato negli screenshot seguenti

Verificare le differenze della tabella delle partizioni su entrambi i dischi emettendo il comando fdisk. La tabella delle partizioni dovrebbe essere simile, eccetto la quinta partizione da /dev/sda che dovrebbe essere rimossa dal disco clonato (/dev/sdb ).

PASSAGGIO TRE - Testare il disco clonato

Infine, spegni la macchina, scollega il vecchio disco rigido e accendi il computer solo con il nuovo disco clonato. Dovrebbe avviarsi nel tuo sistema operativo in pochissimo tempo. Nel caso in cui la macchina si rifiuti di avviarsi, verifica fisicamente i connettori SATA sulla scheda madre e prova a invertirli oppure vai alle impostazioni BIOS/UEFI e assicurati che il disco appropriato sia abilitato nella sequenza di avvio.

Cerca di non avviare la macchina con entrambi i dischi collegati perché potrebbe confondere il bootloader, rendendo impossibile l'avvio del sistema operativo della macchina. Dopo aver verificato che il tuo sistema operativo si avvia normalmente, utilizza lo stesso strumento utilizzato per ridurre il file system per estendere la partizione clonata aggiungendo lo spazio non allocato.

Usando questo metodo dd puoi trasferire qualsiasi variante del sistema operativo Windows o Linux con tutte le tue impostazioni personalizzate, i programmi installati e i file da un HDD più grande a un SSD più piccolo, senza l'onere di installare il sistema operativo da zero e spendere tonnellate di ore per personalizzarlo .


Linux
  1. Come partizionare un disco in Linux

  2. Come eseguire il backup o clonare le partizioni Linux utilizzando il comando "cat".

  3. Gestisci i dischi con DiskPart

  4. Come configurare il filesystem ZFS su Linux con esempi di comandi zpool

  5. Come clonare la partizione del disco di Linux sulla rete usando dd

Come configurare la rete IP con il comando nmcli in Linux

Come creare e gestire le partizioni del disco con Fdisk in Linux

Come clonare e ripristinare la partizione Linux usando il comando dd

Come elencare i dischi su Linux

Come crittografare la partizione su Linux

Come creare partizioni del disco su Linux