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

