#!/bin/bash
LOCAL_LOG=/var/log/synchro.log
rm -f $LOCAL_LOG
touch $LOCAL_LOG
function calc_date ()
{
date +"%Y-%m-%d %H:%M:%S :"
}
# Enregistrement dans la LOG locale
echo "`calc_date` DEBUT SYNCHRONISATION REP1 REP2! ($*)" >> $LOCAL_LOG
# Synchronisation du répertoire rep1 vers rep2
echo "`calc_date` Synchronisation du répertoire rep1 vers rep2 ! ($*)" >> $LOCAL_LOG
# La synchronisation est lancé par l'utilisateur lambda
su - lambda << EOF
./synchro_rep1rep2.sh
exit
EOF
# Le script est dans /root
cd
rsync -atporuvzb /home/lambda/synchro/rep /data/synchro/
./copie_1.sh
echo "`calc_date` Copie 1 ok !" >> $LOCAL_LOG
# on recopie
cd
./copie_2.sh
echo "copie 2 ok !" >> $LOCAL_LOG
echo "`calc_date` SYNCHRONISATION REP1 REP2 TERMINE ! ($*)" >> $LOCAL_LOG
cd
./rapport.sh > script de mail, il envoie simplement un rapport.
pour expliquer un peu mieux les choses :
J'ai un serveur windows qui reçoit un fichier tous les matins d'un partenaire. Un de mes serveurs linux, hébergeant une application métier a besoin de ce fichier, il va donc le chercher via rsync tous les matins sur le windows. Il en evoie aussi d'autres par la meme occasion sur un second répertoire du windows, qui se charge de le renvoyer au partenaire (c'est une boucle toute simple en fait)
Comme j'ai des problèmes de droits, je recopie en root sur le linux, le répertoire applicatif vers mon utilisateur lambda qui a le droit de faire du rsync vers le windows.
Donc root, recopie les fichiers vers le home de lambda, qui lance la synchronisation et qui récupère tous les nouveaux fichiers du windows, et qui au cours de la meme action, envoie les fichiers générés par l'applicatif.
ais je été clair ?