Script backup applicatif
Révision datée du 9 septembre 2015 à 10:09 par Ddevleeschauwer (discussion | contributions) (Page créée avec « {{ Introduction | Ce script permet d'archiver et sauvegardé les fichiers d'une application }} ==Utilisation== <pre> Utilisation du script : Afficher l'aide -s Dossier so... »)
Ce script permet d'archiver et sauvegardé les fichiers d'une application
Utilisation
Utilisation du script : Afficher l'aide -s Dossier source de l'application à sauvegarder (sans le / de fin) -n Nom du Backup (default: Nom du dossier + YYYY/MM/DD) -f Dossier pour la création de l'archive (default: Dossier courant) -t Chemin de sauvegarde de l hote distant -v Mode verbeux Exemple utilisation script_backup_applicatif -s /opt/redmine-2.6.0 -n Redmine -t root@192.168.1.7:/mnt/backup_server/backup_mysql/glpinew/ IMPORTANT Pensez à copier la clef public sur le serveur que vous desirer envoyer le backup ( Pour automatiser la tache de backup) [user@ordi ~]$ ssh-copy-id -i ~/.ssh/id_dsa.pub root@serveur-distant
Code
#!/bin/bash
#Script générique pour réaliser un backup des fichiers d'un application
#Susceptible d'etre ajouter dans une tache cron
#Auteur : DiouxX
#Date : Septembre 2015
#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
SOURCE=""
SOURCE_FOLDER=""
PARENT_FOLDER=""
TAR_FOLDER=""
NAME=""
TARGET=""
VERBOSE=0
function usage(){
echo -e "Utilisation du script :"
echo -e "\tAfficher l'aide"
echo -e "-s\tDossier source de l'application à sauvegarder (sans le / de fin)"
echo -e "-n\tNom du Backup (default: Nom du dossier + YYYY/MM/DD)"
echo -e "-f\tDossier pour la création de l'archive (default: Dossier courant)"
echo -e "-t\tChemin de sauvegarde de l hote distant"
echo -e "-v\tMode verbeux"
echo -e "\nExemple utilisation"
echo -e "script_backup_applicatif -s /opt/redmine-2.6.0 -n Redmine -t root@192.168.1.7:/mnt/backup_server/backup_mysql/glpinew/"
echo -e "\nIMPORTANT\nPensez à copier la clef public sur le serveur que vous desirer envoyer le backup ( Pour automatiser la tache de backup)"
echo -e "[user@ordi ~]$ ssh-copy-id -i ~/.ssh/id_dsa.pub root@serveur-distant"
exit 0
}
function verbose(){
if [ $VERBOSE -eq 1 ]
then
#Affichage de debug
echo -e "$1"
fi
}
if [ $# -eq 0 ]
then
usage
fi
while getopts s:n:f:vt: option
do
case $option in
s)
SOURCE=$OPTARG
;;
n)
NAME=$OPTARG
;;
f)
TAR_FOLDER=$OPTARG
;;
t)
TARGET=$OPTARG
;;
v)
VERBOSE=1
;;
*)
usage
;;
esac
done
#Extraction du dossier dans le chemin fournit en parametre
SOURCE_FOLDER=`echo $SOURCE | rev | cut -d/ -f1 | rev`
#Extraction du dossier racine a archiver
PARENT_FOLDER=`echo $SOURCE | rev | cut -d/ -f2- | rev`
#Assignation du fichier de backup et generation de la date
if [ "$NAME" = "" ]
then
DATE=`date +"%Y"-"%m"-"%d"`
NAME=${SOURCE}-${DATE}.tar.bz2
else
DATE=`date +"%Y"-"%m"-"%d"`
NAME=${NAME}-${DATE}.tar.bz2
fi
verbose "\nListing des parametres :\n\tSource : $SOURCE\n\tDossier Parent : $PARENT_FOLDER\n\tDossier : $SOURCE_FOLDER\n\tNom : $NAME\n\tDossier backup : $TAR_FOLDER\n\tDestination : $TARGET"
#Archivage du dossier
verbose "Création de l'archive..."
if [ "$TAR_FOLDER" == "" ]
then
verbose "\nCommande Archivae : tar cjf $NAME -C $PARENT_FOLDER $SOURCE_FOLDER"
tar cjf $NAME -C $PARENT_FOLDER $SOURCE_FOLDER
else
verbose "\nCommande Archive : tar cjf $TAR_FOLDER/$NAME -C $PARENT_FOLDER $SOURCE_FOLDER"
tar cjf $TAR_FOLDER/$NAME -C $PARENT_FOLDER $SOURCE_FOLDER
fi
if [ $? != 0 ]
then
verbose "Création de l'archive \t\t\t$ROUGE[KO]$NORMAL"
else
verbose "Création de l'archive \t\t\t$VERT[OK]$NORMAL"
fi
#Copie de l'archive vers le serveur renseigne en parametre
if [ "$TAR_FOLDER" == "" ]
then
verbose "\nCommande Transfert : scp $NAME_FILE $TARGET"
scp $NAME_FILE $TARGET > /dev/null 2>&1
else
verbose "\nCommande Transfert : scp $TAR_FOLDER/$NAME $TARGET"
scp $TAR_FOLDER/$NAME $TARGET > /dev/null 2>&1
fi
if [ $? != 0 ]
then
verbose "Transfert Archive \t\t\t$ROUGE[KO]$NORMAL"
else
verbose "Transfert Archive \t\t\t$VERT[OK]$NORMAL"
fi
#Suppresion du dump local
if [ "$TAR_FOLDER" == "" ]
then
rm -f $NAME_FILE
else
rm -f $TAR_FOLDER/$NAME
fi
if [ $? != 0 ]
then
verbose "Suppression Dump local \t\t$ROUGE[KO]$NORMAL"
else
verbose "Suppression Dump local \t\t$VERT[OK]$NORMAL"
fi