Script rsync distant

De DiouxX's Wiki
Aller à : navigation, rechercher
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
        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

else
        echo -e "$ROUGE\tPas de réseaux => Pas de RSYNC$NORMAL"
        #Fin du script
        horodate "END RSYNC"

fi