Preambolo
Se volete commentare o aiutarmi nella stesura fatelo! Ho bisogno di voi! Volevo completare la guida insieme a voi e realizzare delle piccole procedure automatizzate per rendere i passi piu' facili da eseguire per chi e' meno esperto. Un'altro scopo di questa guida e' quello di raccogliere informazioni sparse sul web e renderle fruibili per aumentare la conoscenza dei meno esperti. Sono convinto che non basta dare supporto ma bisogna rendere le persone indipendenti. A volte manca la volonta' di migliorarsi ma a volte manca anche la volonta' di rendere le persone che abbiamo di fronte totalmente libere e indipendenti. A volte ci teniamo per noi quell'informazione/conoscenza proprio per renderci indispensabili e creiamo senza saperlo dipendenza.
E la dipendenza e' sempre una malattia.
Per i moderatori: Non sapevo dove crearla... O qui o nei 3rd Party Projects o ... se volete spostatela dove dovrebbe andare... Grazie.
Introduzione
Spero che questa guida possa servire come base per altre piu' semplici o per una futura applicazione di backup o procedure di backup/recovery.
Prerequisiti:
La seguente guida si applica ad una installazione ubuntu 8.04 su una partizione, quindi non e' possibile applicarla ad un sistema installato tramite wubi.
La copia puo' essere fatta su un filesystem che risiede su altra partizione o altro disco, quindi non si puo' effettuare la copia sullo stesso filesystem di root (/)
Al momento si presuppone che il sistema da copiare sia su una sola partizione.
Questi vincoli potranno essere superati nel tempo man a mano che si faranno altri test e amplieremo la guida.
NOTA: La seguente guida fa un backup a caldo, cioe' con il sistema da cui fare la copia in esecuzione. Questo comporta una probabilita' che il backup del sistema sia inconsistente. Sebben molti prodotti fanno backup a caldo credo che tutti siano affetti da questa cosa. Molti sistemi professionali fanno backup a freddo proprio per ovviare a questa cosa. Riadattero' la guida anche per fare un backup a freddo.
Passi:
Supponiamo che si voglia copiare su un filesystem NTFS. Questi sono i passi:
- 1) Creare una directory dove mettere la copia del sistema. Per esempio se il filesystem NTFS e' montato su /media/NTFS: (((Si utilizza la struttura usata anche dal wubi per poter utilizzare poi il supporto lupin )))
Nota tecnica: Nella fase di boot il grub dovra' accedere al menu.lst per sapere quale kernel avviare. Inoltre il kernel dovra' essere disponibile e initramfs dovra' essere generato con il supporto lupin. Quindi la directory di boot dovra' risultare accessibile dal grub. Si riesce ad avere la directory sia esterna che interna al file utilizzando il mount con l'opzione --bind.cd /media/DatiNTFS
mkdir ubuntu
mkdir ubuntu/disks
mkdir ubuntu/disks/boot
mkdir ubuntu/disks/boot/grub - 2) Creare il file che conterra' l'intero sistema (che chiameremo root.disk) e lo formattiamo in ext3. Per esempio 15Gb.
Nota tecnica: Il file e' creato come sparse usando l'opzione seek del comando dd rendendo la creazione del file di 15Gb pressocche' istantanea.dd if=/dev/zero of=/media/DatiNTFS/ubuntu/disks/root.disk count=0 bs=1M seek=15360
mkfs -V -t ext3 /media/DatiNTFS/ubuntu/disks/root.disk - 3) Montare il file per poterci copiare dentro.
Nota tecnica: Uso parametro sync cosi' non usa la cache. (lento ma sicuro)mkdir /tmp/imagetmp
sudo mount -o loop,sync /media/DatiNTFS/ubuntu/disks/root.disk /tmp/imagetmp - 4) Copiare tutto con rsync.
Nota tecnica: Qui si e' usato rsync version 2.6.9 protocol version 29. Notare che la directory /tmp non e' copiata ed e' la stessa directory su cui montiamo il file system virtuale che stiamo creando. Le directory /proc e /sys non e' necessario copiarle. La directory /host in genere e' usata dal supporto lupin e monta il filesystem ospitante quindi non va copiata. Le directory /mnt e /media sono directory che in genere montano altri filesystem e quindi qui vengono escluse. Sono escluse anche le directory .gvfs che appartengono al virtual filesystem di Gnome. Per gli altri paramentri potete vedere man rsync. Inoltre viene creato un file di log. Ho tolto l'opzione --delete in quanto pericolosa. Per ogni file copiato l'rsync calcola un checksum e controlla se la copia e' stata creata identica! E' stata tolta l'opzione -S (gestione file sparse efficiente) perche' rallentava notevolmente la copia. Nel caso di backup a caldo il tempo di copia di rsync puo' risultare lungo e rallentare notevolmente il sistema. Si puo' ovviare a questo limitando l'uso del sistema con il parametro --bwlimit=KBPS. Sostituendo a KBPS un valore adatto allo scopo.sudo rsync --human-readable --verbose --progress --stats --times --owner --perms --group --checksum --recursive --links --hard-links --specials --devices --whole-file --log-file=/tmp/rsync.log --exclude=/sys/* --exclude=/proc/* --exclude=/host/* --exclude=/mnt/* --exclude=/media/*/* --exclude=/tmp/* --exclude=/home/*/.gvfs --exclude=/root/.gvfs / /tmp/imagetmp/ - 5) Bisogna poi installare nella nostra copia il support lupin. Utilizziamo per fare questo il comando chroot
ed eseguiamo l'installazione del pacchetto nell'ambiente chroot:sudo mount -o bind /proc /tmp/imagetmp/proc
sudo mount -o bind /dev /tmp/imagetmp/dev
sudo mount -o bind /sys /tmp/imagetmp/sys
sudo chroot /tmp/imagetmp/apt-get install lupin-support
exitsudo umount /tmp/imagetmp/proc
sudo umount /tmp/imagetmp/dev
sudo umount /tmp/imagetmp/sys - 6) E' necessario poi modificare l'fstab del sistema che e' stato copiato. (qui si puo' fare una procedura automatica)
# /etc/fstab: static file system information.
#
#
#
# Righe in comune
proc /proc proc defaults 0 0
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0
#
#
# Partizione reale
##UUID=69333b09-4dba-4110-a22e-a8b1f5ba6576 / ext3 errors=remount-ro 0 1
##UUID=d00830fa-528b-4fbf-a1ba-9610648a6b41 none swap sw 0 0
#
#
#
# Filesystem virtuale montato in loop (es.wubi lubi)
/host/ubuntu/disks/root.disk / ext3 loop,errors=remount-ro 0 1
/host/ubuntu/disks/swap.disk none swap loop,sw 0 0
#
# e si aggiunge in modalita' bind sempre per il virtuale:
#
/host/ubuntu/disks/boot /boot none bind 0 0
- 7) Infine modificare il file di configurazione del Grub necessario per poter avviare il backup semplicemente scegliendolo tra i sistemi operativi installati sul pc.
Working...
Strumenti:
- [li]Come calcolo lo spazio necessario per la mia copia di backup? Da un terminale digitare:
Il risultato e' in MByte. Viene aggiunto un 15% di spazio in piu'. Se volete piu' spazio basta che modificate il 15 nell'espressione.df / |tail -n 1|awk '{sum = ($3 + ($3*15/100))/1000} {print sum}' -
Un utile strumento per diagnosticare problematiche di boot che segnalo e' il Boot Info Script - SourceForge.net (veramente potente)
Boot Info Script: How to
Generale: RigaDiComando - BackupDelSistema
Mount: Mount - Mounting Windows Partitions in Ubuntu
Fstab: Fstab
Grub: Grub - Grub Legacy - Ripristino Grub - Grub 2 Title Tweaks - The Grub 2 Guide (formerly Grub 2 Basics) - GRUB 2 - 5 Common Tasks
Rsync: Rsync
Lupin: Lupin, the loop installer (vedi anche pacchetto lupin-support)
Specifici: Creating, booting, and restoring bootable full-system backup images using Bubakup - WubiGuide
Wubi, the easiest way to Linux!