[Tech] Script per backup basato su rsync
    Francesco Poli 
    frx@firenze.linux.it
       
    Dom 21 Dic 2003 13:12:56 CET
    
    
  
Salve a tutti!  :)
Ho preparato uno script (basato su rsync) per automatizzare i backup e,
pensando di fare cosa gradita, lo invio in lista.
Data la semplicita` dello script e la sua non eccessiva originalita`
(e` ispirato a http://article.gmane.org/gmane.linux.gentoo.user/44551),
il tutto e` da considerarsi di pubblico dominio (lo script *non* e`
soggetto ad alcun copyright).
Questo script crea una copia fedele di tutti i sottoalberi di directory
desiderati e puo` essere eseguito automaticamente (con i privilegi di
root) da crond.
La copia di backup sta su una partizione (di un disco interno o esterno)
che viene montata per l'occasione e smontata al termine delle
operazioni: nel file /etc/fstab deve esistere un'opportuna riga che
renda possibile montare questa partizione con la semplice sintassi
# mount <mount_point>
Lo script puo` (a richiesta) ripulire la copia di backup elimando da
questa i file che non sono piu` presenti nell'originale.
Si ottiene questo risultato passando l'argomento "clean" allo script.
E` inoltre possibile inibire il backup creando un file opportuno
(il file $GIVE_UP definito all'interno dello script stesso):
finche' esiste questo file lo script esce senza fare niente.
Si puo` anche inibire la pulizia della copia di backup creando un altro
file opportuno (il file $NO_CLEAN): finche' esiste questo secondo file
lo script disabilita la pulizia del backup anche nel caso in cui venga
richiesta.
Vediamo allora lo script e gli altri file correlati.
 =========================================================== file: ==
  -rwxr--r--  root  root  /usr/local/sbin/backuprsync.sh             
 =========================================================== inizio =
#!/bin/bash
#######################
# rsync backup script #
#######################
# file /etc/fstab must contain a line similar to
# /dev/something  /mount/point  ext3  noauto  0  0
# define /mount/point for backup disk
BACKUP_TO=/mnt/backup
# define include/exclude list file
INCLUDE=/usr/local/etc/backuprsync.include
# define give-up file
GIVE_UP=/usr/local/etc/nobackup
# define no-cleaning file
NO_CLEAN=/usr/local/etc/noclean
echo "   Checking if backup is desired..."
echo
[ -e $GIVE_UP ] && exit 1
echo -n "   Checking if cleaning is desired: "
if [ $1 -a $1 == "clean" -a ! -e $NO_CLEAN ]
then
    DELETE_OPT="--delete"
    echo "yes..."
else
    DELETE_OPT=""
    echo "no..."
fi
echo
echo "   Mounting backup filesystem..."
echo
/bin/mount $BACKUP_TO
sleep 4
echo "   Checking if backup filesystem is really mounted..."
echo
/bin/mount | /bin/egrep $BACKUP_TO || exit 2
echo
echo "   Performing backup..."
echo
/usr/bin/rsync -av $DELETE_OPT --include-from=$INCLUDE / $BACKUP_TO/
echo
echo "   Reporting backup filesystem status..."
echo
/bin/df --si $BACKUP_TO
echo
echo "   Unmounting backup filesystem..."
echo
/bin/umount $BACKUP_TO
 =========================================================== fine ===
 =========================================================== file: ==
  -rw-r-----  root  root  /usr/local/etc/backuprsync.include         
 =========================================================== inizio =
- lost+found
- /etc/mtab
- /etc/gshadow
- /etc/gshadow-
- /etc/shadow
- /etc/shadow-
+ /etc**
+ /usr/
+ /usr/local**
+ /var/
+ /var/local**
+ /home/
- /home/frx/.galeon/mozilla/galeon/Cache
+ /home/frx**
- *
 =========================================================== fine ===
 =========================================================== file: ==
  -rwxr--r--  root  root  /etc/cron.backuptime/dobackup
 =========================================================== inizio =
#!/bin/sh
/usr/local/sbin/backuprsync.sh
 =========================================================== fine ===
 =========================================================== file: ==
  -rwxr--r--  root  root  /etc/cron.cleantime/dobackupclean
 =========================================================== inizio =
#!/bin/sh
/usr/local/sbin/backuprsync.sh clean
 =========================================================== fine ===
Infine, aggiungendo le seguenti righe al file /etc/crontab, si ottiene
l'esecuzione automatica del backup ogni sera alle ore 22;01 dal lunedi`
al venerdi` e l'esecuzione automatica del backup con pulizia ogni sabato
sera (sempre alle ore 22;01):
# custom run-parts
01 22 * * 1-5 root run-parts /etc/cron.backuptime
01 22 * * 6   root run-parts /etc/cron.cleantime
Commenti, idee, suggerimenti sono graditi!
Ciao!  :)
-- 
             |  GnuPG Key ID = DD6DFCF4 | You're compiling a program
  Francesco  |        Key fingerprint = | and, all of a sudden, boom!
     Poli    | C979 F34B 27CE 5CD8 DC12 |         -- from APT HOWTO,
             | 31B5 78F4 279B DD6D FCF4 |             version 1.8.0
-------------- parte successiva --------------
Un allegato non testuale è stato rimosso....
Nome:        non disponibile
Tipo:        application/pgp-signature
Dimensione:  189 bytes
Descrizione: non disponibile
URL:         <http://lists.linux.it/pipermail/flug-tech/attachments/20031221/4d7b92e8/attachment.pgp>
    
    
       
       Maggiori informazioni sulla lista 
	       flug-tech