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