Eseguire il backup di un’intera distribuzione con il comando “cp”

La potenza di GNU/Linux si nota anche nella sua estrema semplicità. Tradizionalmente in sistemi operativi unix-like le utilità più semplici e basilari si integrano tra loro a formare un ecosistema in cui ogni compito è assolto nello specifico da una precisa applicazione. Non capita raramente di scoprire che qualcuna di quelle “semplici” applicazioni può essere usata per scopi per cui non erano state concepite.

linux-cp.png
Copiare un OS da una partizione all’altra non è mai stato così semplice

E’ questo il caso di “cp”, che normalmente assolve al compito di “copiare” (cp è un’abbreviazione di copy). Vi mostro adesso, infatti, come si può sfruttare questa semplice utilità per fare il backup di una intera distro, e ricavarne anche vantaggi. E’ il caso di avvertire i lettori che esistono metodi magari più eleganti per compiere questa operazione, ma lo scopo di questo articolo non è l’eleganza o la semplicità: è dimostrare la potenza di un piccolo comando.

nb: questo mio articolo è apparso originariamente su html.it

I vantaggi nell’usare questa procedura sono che:

  • Si esplora un uso poco conosciuto di cp :-)
  • Si prende confidenza con il filesystem unix e la sua infinita flessibilità
  • Copiando l’intera distribuzione in una partizione diversa, si esegue la deframmentazione di tutti i file
  • Non si ha più bisogno di utilità esterne o di procedure complicate per fare un backup

Immaginiamo di voler spostare la nostra distribuzione dalla partizione “A” alla partizione “A-copia“. Dopo aver effettuato i controlli necessari, aver ripulito la nuova partizione e creato un filesystem secondo le nostre preferenze, siamo pronti a cominciare a copiare. Per motivi di praticità vi mostrerò come copiare la distribuzione usando un liveCD, che chiameremo “B“. Questo ci torna utile soprattutto nel momento in cui andiamo a copiare alcune directory speciali o “virtuali”. In sostanza usiamo B come mezzo per copiare A in A-copia.

Sconsiglio di usare una qualsiasi interfaccia grafica per compiere questa operazione, proviamo ad usare direttamente la shell con cp, o al massimo il file manager ncurses MC. La prima preoccupazione deve essere quella di preservare correttamente i permessi e i proprietari di ogni singolo file copiato, altrimenti all’avvio del nuovo sistema operativo copiato, potremmo avere un semplice mucchio di file e directory completamente fuori uso. Per questo se si usa cp bisognerà stare attenti a passare sempre il parametro “-a” (consultate il manuale di cp per riferimenti), mentre se si usa MC si avrà cura di abilitare l’opzione “Preserva gli attributi“, che suona anche un tantino scaramantica :D

Procediamo, bisogna prima di tutto montare la partizione vuota appena creata e dotata un filesystem che conterrà A-copia, per poterci copiare A. Dal momento che per operare si sta usando una terza distribuzione “C”, che potrebbe essere un liveCD o una distribuzione installata, possiamo copiare direttamente quasi tutto il contenuto della directory radice di A, come mostrato nella seguente schermata.

Si faccia molta attenzione all’opzione “Preserva gli attributi” e si eviti di includere nella selezione da copiare le directory /media /mnt e tutti i link o le directory che contengono link a filesystem in uso, come /cdrom, o che potrebbero fare riferimento a directory indesiderate o, ciò che peggio, collegamenti ricorsivi. Ecco una immagine di MC

cp-backup_mc.png
Se si usa MC si avrà cura di abilitare l’opzione “Preserva gli attributi“, che suona anche un tantino scaramantica :D

Il comando cp invece sarebbe qualcosa come:

$: sudo cp -a /bin /boot /dev /etc /home /initrd /lib /lost+found /opt /proc /root /sbin /srv /sys /tmp /usr /var /media/hdb6

L’intero processo può durare alcuni minuti, molto dipende dalle dimensioni della distribuzione da copiare e dalla velocità del computer sul quale si effettua l’operazione. Una volta completata la copia si potranno creare le directory che abbiamo precedente omesso, in questo caso /media e /mnt, e creare gli eventuali link, come /cdrom, /initrd.img /vmlinuz e via dicendo.

Il prossimo passo è rendere il nuovo sistema avviabile e adeguarlo alla nuova partizione. Per fare questo agiamo sostanzialmente su un unico file, che indica al sistema la sua disposizione su disco: /etc/fstab. Si dovrà aver cura di adeguare soprattutto la voce che fa riferimento alla “root”, la directory radice, che adesso avrà un campo /dev/hdxn differente, nel caso che vedete nella schermata di MC in alto, il nuovo campo diverrebbe /dev/hdb6, dal momento che si sta spostando il sistema in quella partizione.

L’ultimo tocco sarà quello di aggiungere una voce al bootloader, lilo o grub, per caricare A-copia

Fatto. Riavviate il PC e godetevi la nuova distro-copia!

15 pensieri su “Eseguire il backup di un’intera distribuzione con il comando “cp”

  1. Però, che tempismo!
    Ne avevo proprio bisogno per tornare in possesso di un hard-disk dato in prestito pur di far provare Ubuntu a un amico.
    Ora che è evangelizzato, ciò che è nel mio hd, finirà nel suo al posto di xp e il mio tornerà a casina sua…
    Grazie!

  2. A chi vuole fare dei backup in semplicità mi permetto di consigliare Dar, che stà per Disk Archive (evoluzione del famoso Tar, acronimo di Tape Archive).

    Giusto se qualcuno vuole spingersi su strumenti un po’ più potenti di CP mantenendo sempre semplicità.

    Ciao e bella guida !

  3. Grazie a tutti voi, lo scopo di questa guida infatti era solo quello di evidenziare l’uso di “cp”, app che abbiamo tutti già installata ma magari qualcuno non sospettava potesse bastare a copiare/spostare un’intera distro.

    Non avevo intenzione di proporlo come soluzione di backup definitiva :)

  4. Interessante….Complimenti per la semplcità con cui scrivi.
    Potresti darmi un suggerimento, su come installare ubuntu su una unità esterna ed utilizzare un boot manager? E su come usare un modem adsl usb?

  5. cp -a /bin /boot /dev /etc /home /initrd /lib /lost+found /opt /proc /root /sbin /srv /sys /tmp /usr /var /media/hdb6

    ==

    cp -ax /. /media/hdb6

  6. OT: E’ incredibile vedere come da dicmbre 2006 ad oggi sei diventato così popolare… da 10 commenti di questo post, agli oltre 100 e passa di un post odierno. La solita solfa che ti dicono tutti: ti seguo tutti i giorni, ti leggo sempre, spesso non commento per non “finire nel mucchio” di troll e opinionisti del momento. Anche se applico le tue guide “esotiche” e qualche volta dissento da ciò che pensi, è piacevole sapere che ogni giorno tiri fuori 4-5 articoli per sfamare la mia sete di cazzate informatiche – mia e dei miei amici.

    Beh, non resta che dirti che … cp come metodo di backup mi fa mooooooolto artigianale.. è come dire “fai una foto allo specchio e conservala” … :/
    Un saluto, torno nell’ombra.

  7. Questa guida fa proprio al caso mio…ma ho una domanda:
    se al posto di fare
    <>
    faccio
    <>
    cosa succede?

    Scusate la mia niubbaggine, ma se funzionasse eviterei di dover “creare le directory che abbiamo precedente omesso, in questo caso /media e /mnt, e creare gli eventuali link, come /cdrom, /initrd.img /vmlinuz e via dicendo.”

  8. (scusate il casino… -.-)
    (ecco come doveva essere…)
    se al posto di fare
    sudo cp -a /bin /boot /dev…eccetera…
    faccio
    sudo cp -a /
    cosa succede?

Lascia un commento

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...