LINUX:RSYNC-Rassemblement localement
But
Dans ce script, nous rassemblons en un seul endroit ce que nous voulons sauvegarder. Cet ensemble constitue le niveau courant, le plus actuel de la sauvegarde.
Script
fichier "rsync.courant.bat"
#!/bin/csh
############################################################
# variables à adapter
#
# répertoire du programme
set MANAGER=/manager/backup
# répertoire de la base des sauvegardes
set BASE=/produc/backup
# répertoire des journaux
set DIRLOG=/produc/backup/log
############################################################
cd $MANAGER
# rsync => option -n pour être en étape de test
# TEST: si la sauvegarde de incrémentielle est en cours, attendre 10 secondes
set TEST2=`/usr/bin/cat ${DIRLOG}/rsync.jsm.lock`
if ( "$TEST2" != "fin" ) then
/usr/bin/sleep 10s
endif
# TEST: si un autre processus rsync est encore en cours, ne pas démarrer celui-ci
set TEST1=`ps ax | grep "rsync --server" | grep -v grep`
if ( "$TEST1" == "" ) then
echo debut > ${DIRLOG}/rsync.courant.lock
date +%Y/%m/%d\ %H:%M:00 >> ${DIRLOG}/log.courant.lis
set TEST2=1
if ( "$TEST2" == "1" ) then
if ( "$TEST2" == "1" ) then
# boucler sur les différents répertoires à sauver, listés dans le fichier repertoire.txt
# format: 2 zones séparées par ":" (un couple par ligne)
# 1. répertoire source à partir de la racine (exemple: /produc/manager)
# 2. répertoire cible sous le répertoire temporel de sauvegarde (exemple;: manager)
set LISTEREPERTOIRE=`/usr/bin/cat ${MANAGER}/repertoire.txt`
set i
foreach i ($LISTEREPERTOIRE)
set SOURCE=`echo $i | /usr/bin/awk -F ":" '{printf("%s",$1)}' `
set REPERTOIRECIBLE=`echo $i | /usr/bin/awk -F ":" '{printf("%s",$2)}' `
echo Source: $SOURCE
echo Cible: /$REPERTOIRECIBLE
if ( ! -d ${BASE}/courant/${REPERTOIRECIBLE} ) then
mkdir ${BASE}/courant/${REPERTOIRECIBLE}/
endif
/usr/bin/rsync -a --delete --stats --log-file=${DIRLOG}/log.courant.log --exclude=".recycle" ${SOURCE}/ ${BASE}/courant/${REPERTOIRECIBLE}/
end
/usr/bin/date > ${BASE}/courant/date.log
endif
echo fin > ${DIRLOG}/rsync.courant.lock
else
echo "Occupé"
endif
fichier "repertoire.txt"
/produc/utili:utili /produc/mysql.dump:mysql.dump /produc/manager:manager