Procedure di Backup con Bash.
E pensare che in questo istante avrei dovuto essere in quel di Bologna a, rimanere basito davanti ai Tool prima, e saltare con i Nine Inch Nails poi. Purtroppo il radiatore della mia auto non era d'accordo con me, ed ecco quindi sfumata l'ipotesi di passare una serata storica (anzi, a dire il vero potenzialmente pił di una, dato che con le spese per la riparazione me ne sarei potuti comperare due di biglietti).
Bon... Cosa fare quindi per porre rimedio alla sventura, nel tentativo di esorcizzare la carogna che perennemente grava sulla mia schiena? Ma un bello ed utile script Bash per la Shell... e cosa se no?!
Bene, cercando di riprendere un tono un po pił serioso mi appresto a parlarvi quindi della mia ultima e semplice pensata in ambito di automatismi di sistema: MakeBackup.
Ho scritto questo script per la shell nel tentativo di coprire una mia necessitą, che credo invero possa riguardare molti tipi di utenza, ovvero, come fa intuire il ben poco originale nome dello script, una procedura automatizzata per la creazione di volumi di backup.
Niente di miracoloso quindi, anche se credo invero sia qualcosa di davvero utile. Essendo piuttosto semplice quindi, si basa su componenti da linea di comando assai diffuse (se non indispensabili) che ogni distribuzione di Linux possiede. Per funzionare in definitiva necessita solamente di tar, e qualche altra banalissima utilitą della shell (roba tipo ls per intenderci ;) ).
Il concetto su cui si basa questo script č piuttosto banale: In pratica vengono copiati da una o pił directory sorgenti tutti i file (e relative sotto cartelle) che si vogliono salvare, in una directory di destinazione, ovvero la cartella appunto destinata alla memorizzazione di volumi di backup, e ovviamente compressi in un apposito archivio.
Lo script comprende inizialmente questa funzione:
MakeBackup()
{
echo "*** $(date) Avvio della procedura di Backup..."
if ! ls $3
then
echo "*** $(date) Attenzione, La directory '$1' non esiste: Procedura di Backup terminata inaspettatamente!"
exit 1
fi
echo "*** $(date) Creazione e compressione di $3/$(date+%Y%m%d%H%M%S)_$1.tar.bz2.tar.bz2..."
tar cvjf $3/$(date +%Y%m%d%H%M%S)_$1.tar.bz2 $2
echo "*** $(date) Procedura di Backup ultimata regolarmente..."
}
Che viene poi richiamata in questo modo:
MakeBackup "volume_1" "/home/v4ldemar/Progetti /home/v4ldemar/Webserver" "/home/backup"
In pratica quello che accade č semplicissimo: Lo script copia ricorsivamente tutti i file e le directory contenute nelle cartelle specificate nel secondo parametro, le archivia in un tar compresso con bzip2, e rinominando questo con un numero generato in base alla data corrente al momento dell'esecuzione dello script, seguito dall'etichetta specificata nel primo parametro (es.: 200709242311_volume_1.tar.bz2).
Tutto qua quindi: Semplice, immediato, e soprattutto utile! Chi lo desidera puņ scaricare lo script direttamente da qui. Terminato il download basta:
- Copiare il file in una cartella qualsiasi;
- Aprirlo con un editor di testi per modificare l'ultima riga, ovvero quella che richiama la funzione principale, riadattandola alle proprie esigenze;
- Rendere il file eseguibile con un bel chmod +x MakeBackup.
- Eseguirlo da terminale con il comando ./MakeBackup.
E con questo credo abbia detto tutto a riguardo se non... buon Backup a tutti!