Ricerca nel sito web

Come clonare i dischi con il comando Linux dd


Su questa pagina

  1. PASSAGGIO UNO - Riduci partizione
  2. PASSAGGIO DUE - Clonare i dischi
    1. Esempio uno - Clona disco MBR (sistema operativo Windows installato sulla seconda partizione)
    2. Esempio due: clona disco GPT (sistema operativo Windows installato sulla quarta partizione)

    In questo tutorial, faremo riferimento a un esempio pratico del comando Linux dd 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 questa guida, utilizzeremo 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 è così. In questi casi, è più sicuro usare ddrescure che può clonare l'intero layout del disco (tabella delle partizioni e blocchi usati all'interno di ogni partizione) senza trasferire effettivamente lo spazio vuoto. DDrescure può essere ottenuto installando il pacchetto gddrescue dai repository principali di Ubuntu.

    PASSO UNO - Riduci partizione

    Puoi ridimensionare una partizione Linux o Windows (shrink) a dimensioni minime utilizzando una distribuzione Linux live come 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 necessario che dd impiegherà per copiare i blocchi del disco non utilizzati, in caso di partizioni enormi, sarà drasticamente ridotto. Nel 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 della partizione da 100 GB o 1 TB che ha meno del 10% dello spazio utilizzato).

    PASSO DUE - Clonare i dischi

    Dopo che la partizione è stata ridimensionata al minimo, collegare fisicamente il secondo disco o SSD al controller SATA/SCSI 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 (assumendo che /dev/sda sia il disco di installazione di Windows o l'unità C: in un ambiente Windows) e annota l'ultima Settore \Fine\ (44898303 come mostrato nell'esempio seguente):

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

    In questa configurazione di test i dischi sono invertiti, quindi /dev/sdb rappresenta l'installazione di Windows sul disco e /dev/sda rappresenta l'SSD vuoto.

    Quindi eseguire 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 avviare il processo di clonazione emettendo 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 dei comandi utilizzati nell'esempio precedente

    dd - dd sta per \Copia e Converti\. Qualcuno potrebbe dire che sta per Data Destroyer (nel caso in cui sbagli il comando può verificarsi un grave danno) o Data Duplicate o Data Description. Usa qualsiasi descrizione si adatta alle tue esigenze!

    if - il disco di origine (in/file di 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 \Fine\ dall'output di fdisk incrementato di un numero intero (+1) - Quanti blocchi di dimensione 512 devono essere copiati prima che si fermi. Qui, dovrebbe trasferire 44099584 settori di 512 byte di dimensione.

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

    | - Linux pipe (canale di comunicazione tra processi in Linux o FIFO)

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

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

    Nel caso in cui si 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, è possibile eseguire alcuni semplici calcoli e moltiplicare per quattro la dimensione standard dei blocchi del disco (512x4) e quindi dividere per quattro il numero totale di blocchi +1 dell'ultima partizione.

    Un altro esempio

    In questo esempio \Fine\ di sda2: 44898303+1 diviso 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), verificare il disco di destinazione utilizzando lo stesso comando sfdisk e confrontare 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é vogliamo solo clonare la partizione del sistema operativo.

    Moltiplicare per otto la dimensione standard dei blocchi del disco (512x8) e quindi dividere per otto il numero totale di blocchi +1 dell'ultima partizione 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 nelle seguenti schermate

    Verificare le differenze nella tabella delle partizioni su entrambi i dischi emettendo il comando fdisk. La tabella delle partizioni dovrebbe essere simile, tranne 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 disco appena 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 avviare il sistema operativo sulla tua macchina. Dopo aver avuto la conferma che il sistema operativo si avvia normalmente, utilizzare 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 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 dedicare tonnellate di ore alla personalizzazione esso.