Jump to content

[Résolu]Script Shell/Unix pour Rsync


Recommended Posts

Bonjour,

Je suis sur un problème depuis plusieurs jours au niveau de la sauvegarde d'un site web hébergé chez OVH sur un serveur hébergé localement.

La meilleure méthode est Rsync, ca je pense pas que l'on pourra me dire le contraire et je me suis donc tout simplement mis à faire un script qui devra être lancé tous les soirs grâce à un CRON.

Seulement ce script fonctionne... bizarrement !! Là ou je lui demande de me sauvegarder /etc, il me sauvegarde /root, et la ou je lui demande de sauver /var, il me sauvegarde /home... donc bon je sèche un peu !!

De même, j'ai une variable ou je stock la date du moment pour daté l'archive mais au bout du compte le dossier s'apelle "backup-date".

En esperant que l'on arrivera à me dépanner parce que vraiment je ne vois pas !! Merci d'avance pour votre participation (surtout vu la longueur du script :keskidit: )

#!/bin/sh

###############################################################################
#########################INITIALISATION DES VARIABLES##########################
###############################################################################

# Date actuelle pour le nommage des dossiers de sauvegarde
DATEA='date +%d%m%y'

# Repertoires du serveur distant a sauvegarder
SOURCES="/etc \
 /var/www \
 /var/lib/mysql \
 "

# Machine distante
REMMACHINE=@ip machine distante

# Utilisateur distant
REMUSER=root

# Repertoire local de sauvegarde
TARGET="/home/dokeos/backupDokeos"

# Repertoire local de stockage des archives
ARCTARGET="/home/dokeos/backupDokeosArchives"

# Options de la commande RSYNC
OPTIONS="--force --ignore-errors --delete --delete-excluded --backup"

# Fichier "log" ou seront inscrites les diffentes etapes du script (echo)
FICHIERLOG=$TARGET/logbackup

# Fichier "log" distant qui sera envoye a ladministrateur systeme
REMLOG=/home/dokeos/logbackupim

# Adresse Email de l'administrateur systeme
ADDRADMIN=@mail admin

###############################################################################
####################################SCRIPT#####################################
###############################################################################

# Verification de la presence et de l'accessibilite au dossier cible
# Creation si il n'existe pas

if test -x $FICHIERLOG;
then
rm $FICHIERLOG
touch $FICHIERLOG
fi

echo "DEBUT" >> $FICHIERLOG
echo "Check des dossiers de sauvegarde ..." >> $FICHIERLOG

# Verification de l'existance du dossier de stockage de la sauvegarde
# Si il n'existe pas, nous le creeons
# Si la creation echoue, exit

echo "Dossier $TARGET check ..." >> $FICHIERLOG

if ! test -x $TARGET;
then
echo "Le repertoire $TARGET sur la machine locale n'existe pas ou n'as pas des permissions convenables.!." >> $FICHIERLOG
echo "Creation..." >> $FICHIERLOG
mkdir -p $TARGET
if ! test -x $TARGET;
then
	echo "Le repertoire $TARGET n'a pas pu etre cree ou vous n'avez pas les permissions necessaires pour le faire.!." >> $FICHIERLOG
	echo "Arret du script" >> $FICHIERLOG
	exit 2
fi
echo "Repertoire $TARGET cree avec succes !!" $FICHIERLOG
echo "" >> $FICHIERLOG
fi

# Verification de l'existance du dossier de stockage des archives de sauvegardes
# Si il n'existe pas, nous le creeons
# Si la creation echoue, exit

echo "Dossier $TARGET ok" >> $FICHIERLOG
echo "Dossier $ARCTARGET check ..." >> $FICHIERLOG

if ! test -x $ARCTARGET;
then
echo "Le repertoire $ARCTARGET sur la machine locale n'existe pas ou n'as pas des permissions convenables.!." >> $FICHIERLOG
echo "Creation..." >> $FICHIERLOG
mkdir -p $ARCTARGET
if ! test -x $ARCTARGET;
then
	echo "Le repertoire $ARCTARGET n'a pas pu etre cree ou vous n'avez pas les permissions necessaires pour le faire.!." >> $FICHIERLOG
	echo "Arret du script" >> $FICHIERLOG
	exit 2
fi
echo "Repertoire $ARCTARGET cree avec succes !!" $FICHIERLOG
echo "" >> $FICHIERLOG
fi

echo "Dossier $ARCTARGET OK" >> $FICHIERLOG
echo "Check des dossiers de sauvegarde termine avec succes" >> $FICHIERLOG
echo "" >> $FICHIERLOG

# Verification de l'existance des dossiers a sauvegarder 
# Si ils n'existent pas, exit

echo "Verification des sources distantes .!." >> $FICHIERLOG

for source in $SOURCES;
do
echo "Analyse de $SOURCE ..." >> $FICHIERLOG
if  ! ssh $REMUSER@$REMMACHINE "test -x $SOURCE";
then
	echo "Erreur sur la source selectionnee" >> $FICHIERLOG
	echo "Repertoire inexistant ou n'ayant pas les permissions suffisantes" >> $FICHIERLOG
	echo "" >> $FICHIERLOG
	exit 2
fi
echo "Analyse de $SOURCE terminee avec succes !!" >> $FICHIERLOG
done

echo "Verification des sources distantes termine avec succes !" >> $FICHIERLOG
echo "" >> $FICHIERLOG
echo "LANCEMENT DE LA SAUVEGARDE..." >> $FICHIERLOG

for source in $SOURCES;
do
# Creation du dossier correspondant a la source sur le serveur de sauvegarde
if ! test -d $TARGET/$SOURCE;
then
	mkdir -p $TARGET/$SOURCE
	echo "Dossier de $SOURCE cree avec succes sur la sauvegarde" >> $FICHIERLOG
fi

# Lancement de la commande de sauvegarde RSYNC
echo "Lancement de RSYNC..." >> $FICHIERLOG

rsync $OPTIONS -avzr -e "ssh" $REMUSER@$REMMACHINE:$SOURCE $TARGET/$SOURCE
done
echo "SAUVEGARDE TERMINEE AVEC SUCCES !!" >> $FICHIERLOG
echo "ARCHIVAGE..." >> $FICHIERLOG

# Archivage de la sauvegarde du jour
tar -cvzf $TARGET-$DATEA.tar.gz $TARGET
cp -R $TARGET-$DATEA.tar.gz $ARCDATEA

echo "ARCHIVAGE TERMINE AVEC SUCCES !!" >> $FICHIERLOG
echo "" >> $FICHIERLOG

echo "JOURNALISATION TERMINEE AVEC SUCCES" >> $FICHIERLOG

# Envoie du fichier de log sur le serveur distant pour que celui ci puisse l'envoyer sur l'email de l'administrateur systeme
scp $FICHIERLOG $REMMACHINE:$REMLOG
ssh $REMUSER@$REMMACHINE "mail -s 'backup du jour' ADDRADMIN < $REMLOG"

Link to comment
Share on other sites

Concernant la date le pb est résolu en mettant des backquotes plutot que des quotes normales mais le plus important est toujours a faire :craint:

Bon et bien j'ai eut ma réponse tout compte fait, erreur des plus primitives, une variable déclarée en minuscule et appelée en majuscule...

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...