Skip to navigation
Logo Penaz's Area

cat /dev/random > penaz

Un piccolo sistema di Backup personalizzato


Vediamo come creare un sistema di backup personalizzato ed automatizzato in Linux.

Buongiorno a tutti, non si capisce mai l'importanza di una buona copia di sicurezza se non quando capitano incidenti che portano alla perdita di gran parte dei propri dati; ed è proprio questo che è successo a me: un momento di distrazione, si pensa di operare su una cartella invece di un'altra, ed il disastro è pronto...

Dopo l'incidente ho deciso di fare in modo che tali circostanze non si verifichino più e perciò ho iniziato a cercare un sistema di backup che più si adattasse alle mie esigenze, senza risultato; e allora nello spirito del programmatore folle ho deciso di crearmelo da me; ed ecco vantaggi e svantaggi del sistema che ho messo in piedi.

Vantaggi:

  • Completamente invisibile
  • Completamente Automatizzato
  • Incrementale
  • Consistente
  • Veloce
  • Accesso Immediato ai file contenuti nel backup

Svantaggi:

  • Richiede molto spazio, infatti il backup non è altro che una copia 1:1 dei file importanti ed in più richiede ulteriore spazio per mantenere la consistenza
  • Richiede una configurazione particolare delle partizioni

Dal 24/06/2013 esiste una versione riprogrammata del sistema di backup

Parte I: Programmi necessari

Il sistema di copia che ho messo in piedi ha alcuni requisiti particolari per garantire la consistenza e la qualità del backup:

  • La partizione di partenza deve essere un'unità logica LVM se si vogliono usare gli snapshot LVM
  • È necessaria una seconda partizione per garantire la consistenza della copia

I programmi che ho usato nel mio sistema sono:

  • Rsync per la copia dei files una volta al giorno
  • Anacron: un piccolo programma che fa in modo che il backup venga eseguito ogni giorno
  • Tar: Per una copia di sicurezza settimanale
  • OSD_cat: per gli avvisi su schermo
  • Samba
  • Cp: per la copia dei TAR settimanali

Parte II: La struttura delle partizioni e snapshot LVM

Il sistema richiede che la partizione da copiare sia un'unità logica LVM in modo da mantenere la consistenza del backup, quindi la struttura delle partizioni che ho è questa:

  • Un volume logico Home da 300GB
  • Un volume logico  Backup da 100GB
  • Un volume logico Snapshot da 7.63GB che sarà creato all'occorrenza

La partizione Snapshot è una partizione particolare che tramite il sistema degli snapshot di LVM permette di "Congelare" lo stato della partizione, in modo da evitare inconsistenze dovute ai cambiamenti dei files dovuti all'utente che lavora. Quando la copia dei dati sarà terminata, si elimina la partizione. Non è necessario che la partizione dedicata allo snapshot sia grandissima, deve semplicemente poter contenere i cambiamenti che avveranno nel periodo che intercorre dalla sua creazione alla sua eliminazione.

Gli snapshot LVM sono velocissimi da preparare, ma hanno un impatto di circa il 50% sulle prestazioni del disco fisso quando attivi. Sconsiglio di tenere lo snapshot sempre attivo.

Parte III: preparazione del backup giornaliero

Ora vediamo il piccolo script che ho creato per effettuare la copia giornaliera dei files contenuti nella mia home, più qualche piccolo file di configurazione di sistema che, venendo modificati molto raramente, posso copiare senza mettere a rischio la consistenza del backup.

#!/bin/sh
#Avviso
echo "Inizio backup giornaliero" | osd_cat -ptop -Acenter --font="-*-times-bold-*-normal-*-20-*-*-*-*-*-*-*"
#Creo lo snapshot
lvcreate -L7.63G -s -nSnapshot /dev/vg/HomePenaz
#Monto lo snapshot in /mnt/Snapshot
mount /dev/vg/Snapshot /mnt/Snapshot
#Monto la partizione di backup
mount /dev/vg/Backup /mnt/Backup
#Inizio della copia
rsync -avz --progress --exclude-from=/usr/local/bin/Backup/exclude-list.txt /mnt/Snapshot/* /mnt/Backup/Home/
rsync -avz --progress /etc/default/grub /mnt/Backup/Sistema/grub.default
rsync -avz --progress /usr/src/linux/.config /mnt/Backup/Sistema/kernel.config
rsync -avz --progress /etc/logrotate.conf /mnt/Backup/Sistema/logrotate.conf
#Fine del Backup, smonto lo snapshot
umount /mnt/Snapshot
#Smonto il backup
umount /mnt/Backup
#Rimuovo lo snapshot
lvremove -f /dev/vg/Snapshot
#Avviso
echo "Fine backup giornaliero" | osd_cat -ptop -Acenter --font="-*-times-bold-*-normal-*-20-*-*-*-*-*-*-*"

Come è possibile notare lo script è molto breve, crea lo snapshot, monta snapshot e partizione di backup, effettua una copia dei files importanti con Rsync, smonta tutto e termina.

Nel primo comando di RSync potete notare la dicitura

--exclude-from=exclude-list.txt

Questa opzione ci permette di escludere files e cartelle dal backup, in modo da rendere più celeri le operazioni di copia, ecco un piccolo esempio di file di esclusione:

*.avi
*.flv
*.mp4
*.iso
Downloads/

Ho usato alcune estensioni di file molto pesanti ed ho escluso tutta la cartella dei downloads per fare un esempio.

Parte IV: Programmazione del backup giornaliero

Per l'esecuzione delle copie avrei voluto affidarmi al mio demone di Cron, ma purtroppo Vixie-Cron non tiene conto del fatto che il mio portatile non è acceso 24 ore su 24, perciò se accendessi il laptop troppo tardi il backup non avrebbe luogo.

Qui ci viene in soccorso Anacron, un piccolo programmino che verifica che un dato comando sia stato eseguito nel periodo prestabilito, se non è stato eseguito lo esegue X minuti dopo l'avvio del sistema.

Come Vixie-Cron usa una propria CronTab, Anacron usa una AnacronTab che troviamo in /etc/anacrontab e aggiungiamo una riga del genere:

1    3    backup.daily    sh /usr/local/bin/Backup/backup.sh

Questo farà in modo che Anacron esegua il comando "sh /usr/local/bin/Backup/backup.sh" una volta al giorno, tre minuti dopo l'avvio del pc e conservi le proprie informazioni in un file chiamato "backup.daily" conservato in /var/spool/anacron

E la copia giornaliera è programmata!

Parte V: Il backup su SAMBA

Per aggiungere un ulteriore livello di sicurezza, ho voluto creare un altro script, da avviare una volta a settimana, che crei un backup della mia home sul disco fisso esterno, collegato tramite il protocollo SAMBA.

#!/bin/sh
#Avviso
echo "Inizio backup settimanale" | osd_cat -ptop -Acenter --font="-*-times-bold-*-normal-*-20-*-*-*-*-*-*-* -d10"
#Monto la cartella di backup
mount /dev/vg/Backup /mnt/Backup
#Monto l'hdd esterno di rete
mount //xxx.xxx.xxx.xxx/USB_Storage /mnt/Snapshot -o guest
#Creo il TAR da inviare al disco
cd /home/penaz
tar -cvf Backup2.tar /mnt/Backup
#Copio il TAR sul disco, dopo elimino
cp /home/penaz/Backup2.tar /mnt/Snapshot/Backup2.tar
cd /mnt/Snapshot
rm BackupLaptop.tar
mv Backup2.tar BackupLaptop.tar
#Elimino il backup dalla Home
cd /home/penaz
rm Backup2.tar
#Smonto tutto
umount /mnt/Backup
umount /mnt/Snapshot
echo "Fine backup settimanale" | osd_cat -ptop -Acenter --font="-*-times-bold-*-normal-*-20-*-*-*-*-*-*-* -d10"

Ovviamente al posto di xxx.xxx.xxx.xxx va messo l'indirizzo IP del disco fisso o del server SAMBA su cui fare la copia.

Lo script non fa altro che montare lo share SAMBA e la partizione di backup, creare un TAR della partizione che contiene la copia di sicurezza di tutti i miei files e copiarla sullo Share Samba, eliminando quello vecchio. Per comodità ho usato ancora le cartelle /mnt/Snapshot e /mnt/Backup adattando lo script.

Qui ho preferito usare cp invece di rsync per 2 motivi:

  • Rsync, se usato con la flag -a, tenta di copiare gli attributi dei files, cosa non sempre possibile su filesystem come NTFS
  • Rsync effettua alcuni controlli alla fine della copia, richiedendo più tempo

Per rendere attivo la copia basta aggiungere una riga al file /etc/anacrontab:

7    10    backup.weekly    sh /usr/local/bin/Backup/sett.sh

Istruendo l'avvio del backup ogni 7 giorni, dieci minuti dopo l'avvio del sistema e conservando le informazioni nel file backup.weekly.

Considerazioni finali

Il sistema è abbastanza stabile e veloce, l'unico dubbio che potrebbe sorgere è quello riguardante la possibilità che il processo giornaliero e quello settimanale collidano, dando luogo ad inconsistenze. Ma dato che la copia principale è giornaliero i files da copiare sono veramente pochi e quindi il processo giornaliero finisce in pochi secondi.

Non vi resta che provare questo (poco) innovativo sistema per avere a disposizione una copia di sicurezza dei vostri dati.

Vi auguro buon divertimento.

Saluti e alla prossima!

Penaz.