Script backup applicatif : Différence entre versions

De DiouxX's Wiki
Aller à : navigation, rechercher
Ligne 165 : Ligne 165 :
 
if [ $? != 0 ]
 
if [ $? != 0 ]
 
then
 
then
         verbose "Suppression Dump local \t\t$ROUGE[KO]$NORMAL"
+
         verbose "Suppression Backup local \t\t$ROUGE[KO]$NORMAL"
 
else
 
else
         verbose "Suppression Dump local \t\t$VERT[OK]$NORMAL"
+
         verbose "Suppression Backup local \t\t$VERT[OK]$NORMAL"
 
fi
 
fi
 
</syntaxhighlight>
 
</syntaxhighlight>
 
[[Catégorie:Scripts System]]
 
[[Catégorie:Scripts System]]

Version du 10 septembre 2015 à 10:09

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 Archive : 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 $TARGET"
	scp $NAME $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
else
        rm -f $TAR_FOLDER/$NAME
fi 

if [ $? != 0 ]
then
        verbose "Suppression Backup local \t\t$ROUGE[KO]$NORMAL"
else
        verbose "Suppression Backup local \t\t$VERT[OK]$NORMAL"
fi