Script rsync distant : Différence entre versions

De DiouxX's Wiki
Aller à : navigation, rechercher
 
Ligne 77 : Ligne 77 :
 
then
 
then
 
         #Check si un rsync est déja lancé
 
         #Check si un rsync est déja lancé
         case "$(pidof rsync | wc -w)" in
+
         #Version Linux
        0)      echo -e "$VERT\tOn fait le rsync$NORMAL"
+
#      case "$(pidof rsync | 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
  
                 /usr/bin/rsync -e ssh -avz --delete-after $SOURCE_FOLDER_PRODUCTION $DESTINATION_FOLDER_PRODUCTION >> $LOG_FILE_PRODUCTION
+
        #Version MacOS
 +
        #pgrep exits with 0 if there is a process matching $PROCESS_NAME running, otherwise it exist with 1.
 +
        if pgrep rsync;
 +
        then
 +
                echo -e "$ROUGE\tUn rsync est déja en train de tourner$NORMAL"
 +
 
 +
        else
 +
                echo -e "$VERT\tOn fait le rsync$NORMAL"
 +
 
 +
                 /usr/bin/rsync -e ssh -avz --no-perms --no-owner --no-group $SOURCE_FOLDER_PRODUCTION $DESTINATION_FOLDER_PRODUCTION >> $LOG_FILE_PRODU                                                                                      CTION
  
 
                 #Fin du script
 
                 #Fin du script
Ligne 89 : Ligne 114 :
 
                 #Suppression fichier log local
 
                 #Suppression fichier log local
 
                 rm $LOG_FILE_PRODUCTION
 
                 rm $LOG_FILE_PRODUCTION
                ;;
 
  
        *)      echo -e "$ROUGE\tUn rsync est déja en train de tourner$NORMAL"
+
 
                ;;
+
         fi
         esac
 
  
 
else
 
else

Version actuelle datée du 20 septembre 2016 à 09:43

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é
        #Version Linux
#       case "$(pidof rsync | 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

        #Version MacOS
        #pgrep exits with 0 if there is a process matching $PROCESS_NAME running, otherwise it exist with 1.
        if pgrep rsync;
        then
                echo -e "$ROUGE\tUn rsync est déja en train de tourner$NORMAL"

        else
                echo -e "$VERT\tOn fait le rsync$NORMAL"

                /usr/bin/rsync -e ssh -avz --no-perms --no-owner --no-group $SOURCE_FOLDER_PRODUCTION $DESTINATION_FOLDER_PRODUCTION >> $LOG_FILE_PRODU                                                                                      CTION

                #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


        fi

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

fi