Più di una volta in abito informatico è utile implementare una coda del tipo FiFo (First In First Out). Nel nostro caso vogliamo realizzare una coda di questo tipo per gestire i backup. Questo tipo di coda ha un funzionamento molto semplice: il file più vecchio viene cancellato, lasciando spazio al file nuovo.

Supponiamo di volere fare il backup in una cartella del tipo /mnt/backup e di volere backuppare tutta la etc (la cartella dove sono memorizzati molti file di configurazione di linux).

Le operazioni da eseguire sono semplicemente tre: 1)Cancellazione del file di backup più vecchio 2)Creazione del nuovo file di backup. 3)Schedulare l’operazione con il cron daemon (opzionale)

Come comando per il backup utilizzerò il tar (semplice potente e veloce), ovviamente con le dovute modifiche potete utilizzare qualsiasi altro comando.

#Eliminazione del primo file ( il piu vecchio nella lista)
delFileNameEtc=$(ls /mnt/backup/bkpetc* | head -n1)
rm $delFileNameEtc
#Creazione di un nuovo backup per etc
fileName=$(date +%y%m%d)
tar cfvz /mnt/backup/bkpetc$fileName.tar.gz /etc

Il succo di questo script è racchiuso in due istruzioni: 1) Selezione del primo file: ls /mnt/backup/bkpetc* | head -n1
2) Creazione di un identificativo progressivo (in questo caso giornaliero) utilizzando il comando $(date +%y%m%d) L’ultima operazione fondamentale è decidere la dimensione della coda FiFO per fare ciò è sufficiente creare nella cartella di backup un determinato numero di file vuoti.

Il numero dei file sarà la dimensione della coda:

cd /mnt/backup/
echo "" > bkpetc20091201.tar.gz
echo "" > bkpetc20091202.tar.gz
... echo "" > bkpetc20091207.tar.gz
In genere io utilizzo uno script simile a questo in abbinamento con il CRON daemon di Linux, al fine di pianificare alcuni backup giornalmente, mantendo uno storico (nell’esempio in questione di 7 giorni). Ovviamente esistono software molto più sofisticati che offrono molte altre possibilità, ma se non volete spendere una fortuna Uno script simile potrebbe essere una buona base di partenza.