Rsync

De SME Server Wiki
Révision de 21 octobre 2006 à 20:18 par WikiSysop (discussion | contributions) (RSYNC vers un disque dur USB)


Principe de la sauvegarde Rsync sur disque dur USB

L'idée est de profiter de rsync et ses options pour : 1- avoir une sauvegarde 1:1 toujours à jours des dossier à sauvegarder 2- avoir des dossiers de sauvegarde secondaire journaliers contenant chacun les fichiers modifiés ou supprimés lors de la sauvegarde journalière

Plaidoyer pour la sauvegarde rsync

Avantages lors de la sauvegarde: 1- n'est copié que ce qui a changé = gain de place 2- support disque dur (ou eventuellement DVD-RW) moins couteux que DAT 3- rapidité de la sauvegarde 4- faible trafique en ecriture

Avantages lors de la restauration 1- rapidité pour rechercher un unique fichier en plusieurs versions sur un seul support 2- rapidité pour restaurer l'integralité de la sauvegarde par simple rsync inversé ou cp sans decompression, ni lecture lente de bandes magnétiques


Economie ne rime pas avec securité

Ce n'est pas parce que l'investissement dans des disques dur USB est moins couteux que dan sdes lecteurs DAT avec des bandes magnétiques qu'il faut economiser sur le nombre de disques pour les sauvegardes. En effet un disque dur dans un boitier USB peut crasher....

Darrell May, de l'équipe de contribs.org, conseille d'avoi au minimum un jeu de 9 disques durs USB. LUNDI MARDI MERCREDI JEUDI VENDREDI-WK1 VENDREDI-WK2 VENDREDI-WK3 VENDREDI-WK4 VENDREDI-WK5

Un archive mensuelle peut venir s'ajouter en 10° disque. Les disques devront êtres renouvellés régulièrement et de façon échelonnée, par des disques provenant d'un fabricant et d'un vendeur surs. Ces disques devront donc tourner de façon journalière, et être remis dans un lieu sur à l'abris du vol, du feux, et de tous choc électriques, mécaniques, thermiques et électromagnétiques.


RSYNC vers un site secondaire via un tunnel SSH2

à venir

cette méthode poura être une sécurité de plus dans la sauvegarde, attention toutefois au vol des données si le site secondaire n'est pas sur.


RSYNC vers un disque dur USB

Sous SME un disque dur USB est automatiquement monté dans un dossier du type /media/usbdisk1 ... MAis nous n'allons pas utiliser cette fonction.

La première méthode est d'utiliser un script automatique lancé par le cron, et necessitant que le disque soit connecté toute la nuit par exemple afin d'être utilisé pour la sauvegarde, et remplacé dans la journée par le suivnat dans le jeux de disques.


ecrire dans un fichier:

vi /etc/cron.daily/rsyncUsbBackup


#!/bin/sh
#
###################################
# drive to mount
###################################
#
###################################
# directory where to mount drive
###################################
#disque a monter
disque="/dev/sda1"
#repertoire de montage
repertoire="/sauvegarde"
#
#script test
#
echo "on monte le disque"
mount -v -t ext3 $disque $repertoire
#ext3
#echo "on lit le contenu"
#ls $repertoire
#########################################################
# Script to do incremental rsync backups
# Adapted from script found on the rsync.samba.org
# Brian Hone 3/24/2002
# This script is freely distributed under the GPL
#########################################################
#
##################################
# Configure These Options
##################################
#
###################################
# mail address for status updates
#  - This is used to email you a status report
###################################
MAILADDR="admin@ifec.net"
#
###################################
# HOSTNAME
#  - This is also used for reporting
###################################
HOSTNAME="DOMAIN.COM" # <============================ mettre son nom de domaine
#
###################################
# directory to backup
# - This is the path to the directory you want to archive
###################################
BACKUPDIR=('/home/e-smith' '/etc/e-smith') # <============================ listes des dossiers à sauvegarder
#
###################################
# excludes file - contains one wildcard pattern per line of files to exclude
#  - This is a rsync exclude file.  See the rsync man page and/or the
#    example_exclude_file
###################################
EXCLUDES=""
#
###################################
# root directory to for backup stuff
###################################
ARCHIVEROOT=$repertoire"/rsync"
#
#########################################
# From here on out, you probably don't  #
#   want to change anything unless you  #
#   know what you're doing.             #
#########################################
#
# directory which holds our current datastore
CURRENT=main
#
# directory which we save incremental changes to
INCREMENTDIR=`date +%Y-%m-%d`

# options to pass to rsync
OPTIONS="--force --ignore-errors --delete --delete-excluded \
 --exclude-from=$EXCLUDES --backup --backup-dir=$ARCHIVEROOT/$INCREMENTDIR -av"

export PATH=$PATH:/bin:/usr/bin:/usr/local/bin

# make sure our backup tree exists
install -d $ARCHIVEROOT/$CURRENT

# our actual rsyncing function
do_rsync()
{
   echo "debut rsync"
   rsync $OPTIONS ${BACKUPDIR[@]} $ARCHIVEROOT/$CURRENT  >/tmp/rsyncfiles
   echo "fin rsync"
} 

# our post rsync accounting function
do_accounting()
{
   echo "do_accounting"
   echo "do_accounting" >>/tmp/rsync_script_tmpfile
   echo "Backup Accounting for Day $INCREMENTDIR on $HOSTNAME:">/tmp/rsync_script_tmpfile
   echo >> /tmp/rsync_script_tmpfile
   echo "################################################">>/tmp/rsync_script_tmpfile
   echo " du -s $ARCHIVEROOT/* >> /tmp/rsync_script_tmpfile"
   du -s $ARCHIVEROOT/* >> /tmp/rsync_script_tmpfile
   echo "################################################">>/tmp/rsync_script_tmpfile
   echo "état du disque $disque" >>/tmp/rsync_script_tmpfile
   echo "################################################">>/tmp/rsync_script_tmpfile
   echo "df /sauvegarde >>/tmp/rsync_script_tmpfile"
   df /sauvegarde >>/tmp/rsync_script_tmpfile
   echo "################################################">>/tmp/rsync_script_tmpfile
   echo "fichiers pris en compte ce jour">>/tmp/rsync_script_tmpfile
   echo "################################################">>/tmp/rsync_script_tmpfile
   echo "cat /tmp/rsyncfiles  >>/tmp/rsync_script_tmpfile"
   cat  /tmp/rsyncfiles  >>/tmp/rsync_script_tmpfile
   echo "Mail $MAILADDR -s $HOSTNAME Backup Report < /tmp/rsync_script_tmpfile"
   Mail $MAILADDR -s "$HOSTNAME Backup Report" < /tmp/rsync_script_tmpfile
   echo "rm /tmp/rsync_script_tmpfile"
   rm /tmp/rsync_script_tmpfile
}

# some error handling and/or run our backup and accounting
 if [ -f $EXCLUDES ]; then
 if [ -d $BACKUPDIR ]; then
 # now the actual transfer
 do_rsync && do_accounting
 else
 echo "cant find $BACKUPDIR"; exit
 fi
 else
  echo "cant find $EXCLUDES"; exit
fi

#demonter le lecteur
echo "on demonte le disque"
umount -f $disque