Come ti clono la partizione

Primo cane clonato
Ecco un metodo facile facile (?) per clonare una partizione “file a file” (in realtà tutto nasce dalla necessità di annotare i parametri necessari di find e cpio).
Supponete di dover clonare una partizione radice (root partition, per gli anglofoni) del vostro sistema Linux da un disco ad un altro. Potete scegliere di usare un tool a pagamento, tipo Norton Ghost o similari, oppure affidarvi a Linux stesso. Io, chiaramente, vi suggerisco di seguire la seconda strada…

Gli strumenti necessari

Prima di tutto occorre procurarsi una distribuzione live avviabile da CD o da dispositivo USB. Indipendentemente dagli scopi di questo articolo, fa sempre comodo averne una. Al giorno d’oggi ce ne sono tante, partendo da quelle più tradizionali, tipo Knoppix, Slax, Puppy Linux etc., fino alle distribuzioni vere e proprie (ossia da installare su hard disk) il cui CD di installazione è anche un live cd (ad esempio Ubuntu o Fedora).

Poi dovete prevedere un modo di collegare entrambi gli hard disk al computer. Se il vostro è un PC desktop e gli hard disk sono ATA o SATA, dovreste collegarli direttamente alla scheda madre del PC (forse l’hard disk originale l’avete già collegato). Altrimenti potete procurarvi uno di quei contenitori per hard disk da collegarsi esternamente al PC via USB/SATA/FireWire: fate voi.

Se avete un portatile, a meno di adattatori esoterici, l’unica strada sarà quella di usare un contenitore esterno.

Operazioni preliminari

Dopo aver collegato tutta la ferraglia e avviato da live cd o equivalente, verificate che Linux sia in grado di accedere correttamente ad entrambi i dischi. Per fare questo, aprite una finestra di terminale e, da root oppure con sudo, date il comando

# fdisk -l

che vi darà una panoramica dei dischi fissi collegati al sistema e riconosciuti. Supponiamo che il disco originale sia riconosciuto come /dev/sda, mentre il disco di destinazione come /dev/sdb. Se il partizionamento del disco di destinazione non vi soddisfa, si può ripartizionare non distruttivamente con parted, oppure distruttivamente con fdisk stesso.
Per esemplificare, supponiamo di voler clonare la partizione /dev/sda1 sulla partizione /dev/sdb1: ognuno aggiusti poi i nomi in base alle proprie esigenze.

A questo punto occorre formattare la partizione. Il comando cambia a seconda del filesystem che si sceglie. Ad esempio, per il filesystem ext3, il comando è:

# mkfs.ext2 -c -j /dev/sdb1

L’opzione -c abilita il controllo del disco per i settori danneggiati, l’opzione -j crea il giornale sul filesystem (quello che distingue il filesystem ext3 dall’ext2).

Di seguito occorre montare i due filesystem, quello originale e quello nuovo. Ecco i comandi:

# mkdir -p /mnt/origine
# mkdir -p /mnt/destinazione
# mount /dev/sda1 /mnt/origine
# mount /dev/sdb1 /mnt/destinazione

Il comando

La copia vera e propria si fa con i comandi

# cd /mnt/origine
# find . -xdev -print0 | cpio -p -v -0 -m -d /mnt/destinazione

in cui fdisk fornisce l’elenco dei file da copiare e cpio effettua fisicamente la copia. Le varie opzioni stanno a significare:

  • -xdev: limita l’elenco dei file al solo filesystem in cui si trova la cartella /mnt/origine. Questa opzione ha senso più che altro quando il comando viene dato per una directory in cui sono montati anche altri filesystem (ad esempio quando sulla root partition sono montati /proc, /dev, /sys etc…);
  • -print0: l’elenco dei nomi dei file viene separato dal carattere ‘\0’ piuttosto che dal new line. Questo consente di trattare anche i nomi dei file che contengono il carattere new line;
  • -p: istruisce cpio a lavorare in modo copia: cpio lavora salvando su archivio oppure leggendo da archivio, proprio come tar. Con -p cpio legge e scrive da e su disco realizzando, di fatto, una copia;
  • -v: aumenta la verbosità del comando, scrivendo a video il nome dei file che sta copiando;
  • -0: dice a cpio che i nomi dei file da copiare sono separati dal carattere ‘\0’ (conseguenza dell’opzione -print0 di find);
  • -m: mantiene le stesse date di creazione/modifica dei file originale;
  • -d: crea le cartelle quando necessario.

Gran finale

Per ultimo, è necessario rendere il nuovo disco avviabile, andando a modificare il master boot record del disco, oppure il settore di avvio della partizione attiva. Per fare questo su Ubuntu c’è uno script che si chiama grub-install. Se non ce l’aveste disponibile occorre lavorare a “basso livello” con la console di grub. man grub per maggiori info…
A questo punto dovrebbe essere sufficiente arrestare il sistema, sostituire il vecchio hard disk con quello nuovo, e riavviare. Oh, dico… dovrebbe!

Advertisements

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...