« LINUX:RSYNC-Rassemblement localement » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
Ligne 1 : | Ligne 1 : | ||
__FORCETOC__ | __FORCETOC__ | ||
=But= | =But= | ||
Dans ce script, nous rassemblons en un seul endroit ce que nous voulons sauvegarder. Cet ensemble constitue le niveau | Dans ce script, nous rassemblons en un seul endroit ce que nous voulons sauvegarder. Cet ensemble constitue le premier niveau de sauvegarde, le plus actuel de la sauvegarde. | ||
=Script= | =Script= | ||
Ce script est basé sur le logiciel "rsync". "rsync" permet de synchroniser une source avec sa cible; il ne copie que ce qui a été modifié (répertoires, fichiers, privilèges, dates,...). | |||
Voici le contenu du script que nous avons baptisé "'''rsync.courant.bat'''": | |||
---- | ---- | ||
#!/bin/csh | #!/bin/csh | ||
Ligne 14 : | Ligne 14 : | ||
# | # | ||
# répertoire du programme | # répertoire du programme | ||
set MANAGER=/manager/ | set MANAGER=/manager/sauvegarde | ||
# répertoire de la base des sauvegardes | # répertoire de la base des sauvegardes | ||
set BASE=/ | set BASE=/disk2/sauvegarde | ||
# répertoire des journaux | # répertoire des journaux | ||
set DIRLOG=/ | set DIRLOG=/disk2/sauvegarde/log | ||
############################################################ | ############################################################ | ||
cd $MANAGER | cd $MANAGER | ||
# rsync => option -n pour être en étape de test | # rsync => option -n pour être en étape de test | ||
# TEST: si la sauvegarde | # TEST: si la sauvegarde incrémentielle est en cours, attendre 10 secondes | ||
set TEST2=`/usr/bin/cat ${DIRLOG}/rsync.jsm.lock` | set TEST2=`/usr/bin/cat ${DIRLOG}/rsync.jsm.lock` | ||
if ( "$TEST2" != "fin" ) then | if ( "$TEST2" != "fin" ) then | ||
Ligne 37 : | Ligne 37 : | ||
# boucler sur les différents répertoires à sauver, listés dans le fichier repertoire.txt | # 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) | # format: 2 zones séparées par ":" (un couple par ligne) | ||
# 1. répertoire source à partir de la racine (exemple: / | # 1. répertoire source à partir de la racine (exemple: /disk1/manager) | ||
# 2. répertoire cible sous le répertoire temporel de sauvegarde (exemple;: manager) | # 2. répertoire cible sous le répertoire temporel de sauvegarde (exemple;: manager) | ||
set LISTEREPERTOIRE=`/usr/bin/cat ${MANAGER}/repertoire.txt` | set LISTEREPERTOIRE=`/usr/bin/cat ${MANAGER}/repertoire.txt` | ||
Ligne 58 : | Ligne 58 : | ||
endif | endif | ||
---- | ---- | ||
En entête, trois variables sont à adapter selon vos besoins. | |||
Ensuite il teste le contenu d'un fichier afin de détecter si une autre tâche de synchronisation n'est pas encore en cours. | |||
fichier "'''repertoire.txt'''" | Le script boucle sur le fichier "'''repertoire.txt'''". Il traite successivement chaque ligne. Chaque ligne comprend deux zones séparées par le sigle ":". | ||
* La première zone correspond au répertoire à sauver. | |||
* La seconde zone correspond au nom du sous-repertoire, sous le répertoire repris dans la variable "BASE", dans lequel le contenu à sauver sera copié. | |||
---- | ---- | ||
/ | /disk1/utilisateur:utilisateur | ||
/ | /disk1/mysql.dump:mysql.dump | ||
/manager:manager | |||
---- | ---- | ||
Version du 2 février 2022 à 14:41
But
Dans ce script, nous rassemblons en un seul endroit ce que nous voulons sauvegarder. Cet ensemble constitue le premier niveau de sauvegarde, le plus actuel de la sauvegarde.
Script
Ce script est basé sur le logiciel "rsync". "rsync" permet de synchroniser une source avec sa cible; il ne copie que ce qui a été modifié (répertoires, fichiers, privilèges, dates,...).
Voici le contenu du script que nous avons baptisé "rsync.courant.bat":
#!/bin/csh ############################################################ # variables à adapter # # répertoire du programme set MANAGER=/manager/sauvegarde # répertoire de la base des sauvegardes set BASE=/disk2/sauvegarde # répertoire des journaux set DIRLOG=/disk2/sauvegarde/log ############################################################ cd $MANAGER # rsync => option -n pour être en étape de test # TEST: si la sauvegarde 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: /disk1/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
En entête, trois variables sont à adapter selon vos besoins.
Ensuite il teste le contenu d'un fichier afin de détecter si une autre tâche de synchronisation n'est pas encore en cours.
Le script boucle sur le fichier "repertoire.txt". Il traite successivement chaque ligne. Chaque ligne comprend deux zones séparées par le sigle ":".
- La première zone correspond au répertoire à sauver.
- La seconde zone correspond au nom du sous-repertoire, sous le répertoire repris dans la variable "BASE", dans lequel le contenu à sauver sera copié.
/disk1/utilisateur:utilisateur /disk1/mysql.dump:mysql.dump /manager:manager