1. Homepage
  2. Articoli
  3. Video
  4. Bash scripting
  5. Sistema
  6. Tips
  7. News


Backup e restore con GNU tar

» Author: Andrea Ganduglia Date: 2006-04-30 17:40:58 Copyright: (c)2006 Andrea Ganduglia

Indice dei contenuti


Introduzione

Questo documento spiega brevemente come ottenere un backup con l'utility standard GNU tar, non intende essere una guida completa al problema del backup, ma solo una delle possibili alternative.

Fare il backup

Qualsiasi distribuzione GNU/Linux è dotata del comando tar, che seppure non abbia una sintassi amichevole è spesso la via più breve per creare un backup. Basta infatti digitare qualche comando per ottenere un file compresso gz contenente l'albero di filesystem che si vuole preservare.

tar -zcvpf /storage/backup-home-$(date '+%Y-%m-%d').tar.gz \
	--directory /home --exclude=*.{iso,ISO} \
	--exclude=tmp --exclude=lost+found /home

Analizzando il comando lo si può scomporre in sei parti, di cui la prima è lo stesso comando tar. La seconda parte rappresenta le diverse opzioni utilizzate:

Il terzo argomento è il nome del file: in questo caso si è optato per un file che contiene la data corrente in formato ISO-8601 (YYYY-MM-DD), si può ovviamente scegliere un nome differente, che per esempio contenga il nome del giorno della settimana ||$(date

Il quarto argomento --directory /home è la directory di partenza: tutto quando è contenuto al suo interno verrà ricorsivamente incluso nel file tar.gz.

Il quinto argomento --exclude (che è ripetuto tre volte) indica i file o le directory che devono essere escluse dal backup. Si è scelto di escludere le directory tmp, la directory speciale lost+found e tutti i file con estensione iso o ISO.

L'ultimo argomento /home è molto importante, perché rappresenta il path con cui i dati sono rappresentati nel file tar.gz.

Ripristinare i dati

Ovviamente un backup è utile se si possono recuperare i dati! Ecco come fare, ma attenzione i file presenti nell'archivio sovrascriveranno quelli presenti nella directory di destinazione!

tar -zxvpf /storage/backup-home-yyyy-mm-dd.tar.gz --directory /home/test

Le opzioni significano:

Programmare il backup

Invece di lanciare il comando a mano è utile programmare il backup con crontab, quindi memorizziamo il comando visto #sopra in un file tipo: /usr/local/bin/backup.sh e rendiamolo eseguibile:

root:~# chmod 700 /urs/local/bin/backup.sh

Poi aggiungiamo a crontab questa linea, in modo che lo script venga lanciato alle 02:00 di ogni mattina:

00 02 * * * * /usr/local/bin/backup.sh

Ovviamente in /storage i file si accumulano, quindi per evitare problemi di spazio è utile eliminare i file più vecchi, ad esempio di sette giorni.

find /storage -name 'backup-*' -mtime +7 | xargs rm -f

Anche questa parte di script può essere aggiunta al nostro backup.sh, compiendo contestualmente le operazioni di pulizia e backup.

Riferimenti