Script rsync distant
Révision datée du 30 août 2016 à 08:39 par Ddevleeschauwer (discussion | contributions)
Ce script permet de réaliser un rsync d'un dossier local vers un dossier distant via SSH
#!/bin/bash
#Auteur : DiouxX
#Date : 28/07/2016
#Description
#-----------
#Script permettant de réaliser un rsync des fichiers de la graphiste
#Historique modification
#
#Couleur affichage
VERT="\\033[1;32m"
NORMAL="\\033[0;39m"
ROUGE="\\033[1;31m"
ROSE="\\033[1;35m"
BLEU="\\033[1;34m"
BLANC="\\033[0;02m"
BLANCLAIR="\\033[1;08m"
JAUNE="\\033[1;33m"
CYAN="\\033[1;36m"
#Variables globales
#Hote de stcokage
HOST_DESTINATION=192.168.1.1
HOST_ALIVE=0
#Dossier source local a sauvegarder
SOURCE_FOLDER_PRODUCTION=/mnt/backup-production/
#Emplacement du dossier distant
DESTINATION_FOLDER_PRODUCTION=root@$HOST_DESTINATION:/mnt/stockage/backup-production/
#Fichiers LOGS
DATE=`date +"%Y"-"%m"-"%d"`
LOG_FILE_PRODUCTION=/tmp/rsync-production-$DATE.log
#Emplacement du fichier de log distant
LOG_FILE_PRODUCTION_REMOTE=/var/log/rsync-production/rsync-production-$DATE.log
REMOTE_LOG=root@$HOST_DESTINATION
#On redirige toutes les sorties du script dans le fichier de LOG
exec 1>&2 >> $LOG_FILE_PRODUCTION
#Fonction d'horodatage pour les log
#$1 = Texte a afficher apres l'horodatage
function horodate(){
horodate=`date +"\n%d"/"%m"/"%Y"-"%H":"%M":"%S -- "`
echo -e "$horodate$1"
}
#Fonction testant le ping d'un hôte
#$1 = Adresse IP/Nom DNS a tester
function check_host_alive(){
echo -e "Check Host Alive $1"
ping $1 -c5 -q > /dev/null 2>&1
if [ $? != 1 ]
then
echo -e "PING \t$VERT[OK]$NORMAL"
else
echo -e "PING \t$ROUGE[KO]$NORMAL"
HOST_ALIVE=1
fi
}
#Debut du script
horodate "Start RSYNC"
#Test si le serveur de stockage est joignable
#Indirectement, ca verifie si la machine a du reseaux
check_host_alive $HOST_DESTINATION
if [ $HOST_ALIVE != 1 ]
then
#Check si un rsync est déja lancé
case "$(pidof mongod | wc -w)" in
0) echo -e "$VERT\tOn fait le rsync$NORMAL"
/usr/bin/rsync -e ssh -avz --delete-after $SOURCE_FOLDER_PRODUCTION $DESTINATION_FOLDER_PRODUCTION >> $LOG_FILE_PRODUCTION
#Fin du script
horodate "END RSYNC"
#Ecriture fichier log distant
cat $LOG_FILE_PRODUCTION | ssh $REMOTE_LOG "cat >> $LOG_FILE_PRODUCTION_REMOTE"
#Suppression fichier log local
rm $LOG_FILE_PRODUCTION
;;
*) echo -e "$ROUGE\tUn rsync est déja en train de tourner$NORMAL"
;;
esac
else
echo -e "$ROUGE\tPas de réseaux => Pas de RSYNC$NORMAL"
#Fin du script
horodate "END RSYNC"
fi