AL.MA Consulting

Soluzioni per il mondo dell’informatica.

AL.MA Consulting RSS Feed
 
 
 
 

Semplice Backup di una macchina linux

Questo post ha lo scopo di introdurvi ad un semplice script che effettua il backup di una macchina (o porzioni di essa) linux .

Lo script e’ lo stesso che usiamo da diversi clienti… ed e’ sufficiente per le nostre esigenze. Non abbiamo quindi la pretesa di offrirvi un prodotto perfetto, ma piu’ semplicemente queste linee di codice possono servirvi da spunto per creare qualche cosa di personalizzato.

Cosa abbiamo bisogno:

  • un po’ di pazienza
  • un disco usb esterno
  • un editor di testo il vi ad esempio

Cosa prevede lo script:

  • backup di alcune directory selezionate su un device esterno
  • backup di un database mysql
  • rimozione dei file di backup piu’ vecchi di 10 giorni (impostabile a nostro piacere)
  • elenco dei file di backup presenti sul devie esterno e notifica dello spazio libero
  • notifica via e-mail delle operazioni svolte

Ho cercato di commentare lo script, nell’ intento di renderlo il piu’ possibile comprensibile.

Lo script:

#!/bin/bash
# Indico nella variabile data quali directory voglio salvare. Devono essere separate da uno spazio
DATA="/var/www/localhost/htdocs /home"
# definisco il mountpoint ove monto il mio disco esterno e quindi la destinazione del backup
PUNTOMOUNT="/bkpesterno"
DESTINATION="$PUNTOMOUNT/backup"
# Destinatario della mail di notifica
MAILTO="backup@vostrodominio.it"
# quale device utilizzo per il backup (il mio disco usb)
BKPDEVICE="/dev/sda1"
# Monto il disco USB
mount $BKPDEVICE $PUNTOMOUNT
#Assegno un valore di timestamp alla variabile timebkp. La usero' come parte del nome del file e del log
#Il nome del file di backup conterra' il timestamp
timebkp="$(date +%Y%m%d-%T)"
logbkp=$DESTINATION"/log_$timebkp.txt"
# Scrivo alcune informazioni nel log (timestamp e nome del computer)
echo "********" >> $logbkp
echo "********" >> $logbkp
date >> $logbkp
echo "--" >> $logbkp
echo "--" >> $logbkp
hostname >> $logbkp
echo "-- Inizio Operazioni di Backup" >> $logbkp
echo "-- ID File: $timebkp" >> $logbkp
echo "--" >> $logbkp
echo "--" >> $logbkp
# backup dei dati
mkdir $DESTINATION/data
tar cfz $DESTINATION"/data/data_full_$timebkp.tgz" $DATA >> $logbkp
# mysql - dump dei database
mkdir $DESTINATION/database
# al posto del parametro -plamiapassword dovete indicare -p seguito senza spazi dalla VOSTRA password di accesso al database.
# considerate che in questo esempio stiamo utilizzando l'utente root
mysqldump -u root -plamiapassword --all-database > $DESTINATION"/database/mydb_$timebkp.sql"
gzip $DESTINATION"/database/mydb_$timebkp.sql"
# rimuovo file in backup subdir piu' vecchi di 10 gg -- MODIFICABILE A PIACERE
find $DESTINATION -name "*gz" -type f \( -ctime +10 -o -mtime +10 \) -exec rm -f {} \;
# elenco tutti i file nelle directory di backup e invio via mail
echo "-- Lista File Backup appena Eseguito" >> $logbkp
ls -lh $DESTINATION"/database/mydb_$timebkp.sql.gz" >> $logbkp
ls -lh $DESTINATION"/data/data_full_$timebkp.tgz">> $logbkp
echo "--" >> $logbkp
echo "-- Elenco File contenenti Backup" >> $logbkp
find $DESTINATION -name "*\.gz" -type f -print >> $logbkp
find $DESTINATION -name "*\.tgz" -type f -print >> $logbkp
echo "--" >> $logbkp
echo "-- Spazio su device di backup" >> $logbkp
df -h | grep "$PUNTOMOUNT\|Filesystem" >> $logbkp
echo "--" >> $logbkp
date >> $logbkp
echo "-- Fine Operazioni di Backup" >> $logbkp
echo "********" >> $logbkp
echo "********" >> $logbkp
cat $logbkp | mail -s "Risultato Backup" $MAILTO
rm -f $logbkp
umount $PUNTOMOUNT

Note
per magiori informazioni sul comando find, consultate il nostro articolo
per inviare le mail, dovete avere il sistema predisposto all’invio di esse tramite linea di comando (mail)
considerate che e’ possibile schedulare questo processo nel crontab e quindi automatizzarlo

Contattateci per qualsiasi suggerimento o chiarimento a riguardo.

Leave a Reply

Tag

 

settembre 2010
L M M G V S D
« feb    
 12345
6789101112
13141516171819
20212223242526
27282930  

Archivi

Categorie