Script rsync distant : Différence entre versions
(Page créée avec « {{ Introduction | Ce script permet de réaliser un rsync d'un dossier local vers un dossier distant via SSH }} <br> <syntaxhighlight lang=bash> #!/bin/bash #Auteur : Diou... ») |
|||
| Ligne 27 : | Ligne 27 : | ||
#Variables globales | #Variables globales | ||
#Hote de stcokage | #Hote de stcokage | ||
| − | HOST_DESTINATION=192.168.1. | + | HOST_DESTINATION=192.168.1.1 |
HOST_ALIVE=0 | HOST_ALIVE=0 | ||
| Ligne 33 : | Ligne 33 : | ||
SOURCE_FOLDER_PRODUCTION=/mnt/backup-production/ | SOURCE_FOLDER_PRODUCTION=/mnt/backup-production/ | ||
#Emplacement du dossier distant | #Emplacement du dossier distant | ||
| − | DESTINATION_FOLDER_PRODUCTION=root@$HOST_DESTINATION:/ | + | DESTINATION_FOLDER_PRODUCTION=root@$HOST_DESTINATION:/mnt/stockage/backup-production/ |
#Fichiers LOGS | #Fichiers LOGS | ||
DATE=`date +"%Y"-"%m"-"%d"` | DATE=`date +"%Y"-"%m"-"%d"` | ||
| − | LOG_FILE_PRODUCTION=/tmp/rsync | + | LOG_FILE_PRODUCTION=/tmp/rsync-production-$DATE.log |
#Emplacement du fichier de log distant | #Emplacement du fichier de log distant | ||
| − | LOG_FILE_PRODUCTION_REMOTE=/var/log/rsync- | + | LOG_FILE_PRODUCTION_REMOTE=/var/log/rsync-production/rsync-production-$DATE.log |
REMOTE_LOG=root@$HOST_DESTINATION | REMOTE_LOG=root@$HOST_DESTINATION | ||
| Ligne 47 : | Ligne 47 : | ||
#Fonction d'horodatage pour les log | #Fonction d'horodatage pour les log | ||
| − | #$1 = Texte a afficher apres | + | #$1 = Texte a afficher apres l'horodatage |
function horodate(){ | function horodate(){ | ||
horodate=`date +"\n%d"/"%m"/"%Y"-"%H":"%M":"%S -- "` | horodate=`date +"\n%d"/"%m"/"%Y"-"%H":"%M":"%S -- "` | ||
Version du 28 juillet 2016 à 16:59
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