Rsync

Un article de Wiki SOS-ADMIN.


Voici une manière de mettre en place un système de backup avec rsync (site de rsync)

Sommaire

Installation de rsync

Commencez par vérifier que rsync n'est pas déja installé sur votre serveur :

 [root@srv0]# updatedb
 [root@srv0]# whereis rsync

Si vous n'avez pas de réponse à cette commande, allons-y.

 [root@srv0]# cd /tmp
 [root@srv0]# wget ftp://ftp.samba.org/pub/rsync/rsync-2.6.6.tar.gz
 [root@srv0]# tar xvzf rsync-2.6.6.tar.gz
 [root@srv0]# cd rsync-2.6.6/
 [root@srv0]# ./configure
 [root@srv0]# make && make install

Ces opérations installent rsync par défaut dans /usr/local/bin/rsync. Si vous désirez l'installer ailleurs, passez le chemin au ./configure avec l'argument --PREFIX=.

Avant de vous lancer

Avant de vous lancer, vérifier que les répertoires indiqué dans le script sont présent sur votre serveur. Si tel n'est pas le cas, créez-les, ou modifiez le script avec vos propres paramètres.

Action de cette sauvegarde : ce système de backup sauvegarde votre système en ayant toujours un répertoire principal à jour et des archives qui sont sauvegardées 15 jours. Ces archives ne contiennent que les fichiers modifiés au cours de la journée post-sauvegarde.

Script de sauvegarde

 #!/bin/sh
 
 MAILADDR=xxxxx@domain.ltd
 
 HOSTNAME=nom.de.la.machine
 
 # Repertoire a sauvegarder
 BACKUPDIR=/
 
 # fichier qui comporte les exclusions - 1 rep ou 1 fichier par ligne
 EXCLUDES=/root/exclusion_backup
 
 # Repertoire cible du backup
 ARCHIVEROOT=/backup
 
 # Repertoire courant du backup
 CURRENT=main
 
 # Politique d'incrementation
 INCREMENTDIR=`date +%Y-%m-%d`
 
 # Repertoire des archives du backup
 SS_ARCHIVEROOT=archives
 
 # Option du script pour rsync
 OPTIONS="--force --ignore-errors --delete --delete-excluded \
 --exclude-from=$EXCLUDES --backup --backup-dir=$ARCHIVEROOT/$SS_ARCHIVEROOT/$INCREMENTDIR -av"
 
 export PATH=$PATH:/bin:/usr/bin:/usr/local/bin
 
 # Vérifier que les rep existent tous
 install -d $ARCHIVEROOT/$CURRENT
 
 # la fonction
 do_rsync()
 {
    rsync $OPTIONS $BACKUPDIR $ARCHIVEROOT/$CURRENT
    echo "Backup pour le jour $INCREMENTDIR du serveur $HOSTNAME:">/tmp/rsync_script_tmpfile
    echo >> /tmp/rsync_script_tmpfile
    echo "################################################">>/tmp/rsync_script_tmpfile
 
    find /backup/archives/200* -mtime +15 -exec rm -rf {} \;
    echo "effacement des archives de plus de 30 jours">>/tmp/rsync_script_tmpfile
    du -s $ARCHIVEROOT/* >> /tmp/rsync_script_tmpfile
    mail $MAILADDR -s " $HOSTNAME - Rapport de Backup - $INCREMENTDIR" < /tmp/rsync_script_tmpfile
    rm /tmp/rsync_script_tmpfile
 
 }
 
 # En cas d'erreur
 
 if [ -f $EXCLUDES ]; then
  if [ -d $BACKUPDIR ]; then
   do_rsync
  else
   echo "cant find $BACKUPDIR"; exit
  fi
  else
   echo "cant find $EXCLUDES"; exit
 fi

Cron de lancement

Il est préférable de lancer cette sauvegarde toutes les nuits via une tache cron.

 #backup rsync
 0 5 * * * root /root/backup_rsync.sh >/dev/null 2 >/dev/null

Cette tache cron est lancée toutes les nuits à 5h00