LINUX:RSYNC-Rassemblement localement

De WIKI sur Linux (ADB)
Aller à la navigation Aller à la recherche

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



->retour à RSYNC