Script backup applicatif : Différence entre versions

De DiouxX's Wiki
Aller à : navigation, rechercher
(Code)
 
(Une révision intermédiaire par le même utilisateur non affichée)
Ligne 3 : Ligne 3 :
 
<pre>
 
<pre>
 
Utilisation du script :
 
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
+
-s Dossier source de l'application à sauvegarder (sans le / de fin)
script_backup_applicatif -s /opt/redmine-2.6.0 -n Redmine -t root@192.168.1.7:/mnt/backup_server/backup_mysql/glpinew/
+
 
 +
-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
 +
 
 +
Si l'on veut transférer la sauvegarde
 +
 
 +
script_backup_applicatif -s /opt/redmine-2.6.0 -n Redmine -t backup@192.168.1.1:/mnt/backup_server
 +
 
 +
Si l'on veut une sauvegarde en local
 +
 
 +
script_backup_applicatif -s /opt/redmine-2.6.0 -n Redmine -f /opt/backup/Redmine
  
 
IMPORTANT
 
IMPORTANT
 +
 
Pensez à copier la clef public sur le serveur que vous desirer envoyer le backup ( Pour automatiser la tache de backup)
 
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
 
[user@ordi ~]$ ssh-copy-id -i ~/.ssh/id_dsa.pub root@serveur-distant
 
</pre>
 
</pre>
Ligne 23 : Ligne 36 :
 
#Script générique pour réaliser un backup des fichiers d'un application
 
#Script générique pour réaliser un backup des fichiers d'un application
 
#Susceptible d'etre ajouter dans une tache cron
 
#Susceptible d'etre ajouter dans une tache cron
+
 
#Auteur : DiouxX
 
#Date : Septembre 2015
 
 
#Historique modification
 
 
 
#Couleur affichage
 
#Couleur affichage
 
VERT="\\033[1;32m"  
 
VERT="\\033[1;32m"  
Ligne 102 : Ligne 110 :
 
  esac
 
  esac
 
done
 
done
 
+
 
#Extraction du dossier dans le chemin fournit en parametre
 
#Extraction du dossier dans le chemin fournit en parametre
 
SOURCE_FOLDER=`echo $SOURCE | rev | cut -d/ -f1 | rev`
 
SOURCE_FOLDER=`echo $SOURCE | rev | cut -d/ -f1 | rev`
 
+
 
#Extraction du dossier racine a archiver
 
#Extraction du dossier racine a archiver
 
PARENT_FOLDER=`echo $SOURCE | rev | cut -d/ -f2- | rev`
 
PARENT_FOLDER=`echo $SOURCE | rev | cut -d/ -f2- | rev`
 
   
 
   
 
#Assignation du fichier de backup et generation de la date
 
#Assignation du fichier de backup et generation de la date
if [ "$NAME" = "" ]
+
if [ -z $NAME  ]
 
then
 
then
 
DATE=`date +"%Y"-"%m"-"%d"`
 
DATE=`date +"%Y"-"%m"-"%d"`
NAME=${SOURCE}-${DATE}.tar.bz2
+
NAME=${SOURCE_FOLDER}-${DATE}.tar.bz2
 
else
 
else
 
DATE=`date +"%Y"-"%m"-"%d"`
 
DATE=`date +"%Y"-"%m"-"%d"`
Ligne 119 : Ligne 127 :
 
fi
 
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"
 
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
 
#Archivage du dossier
 
verbose "Création de l'archive..."
 
verbose "Création de l'archive..."
if [ "$TAR_FOLDER" == "" ]
+
if [ -z $TAR_FOLDER ]
 
then
 
then
 
verbose "\nCommande Archive : tar cjf $NAME -C $PARENT_FOLDER $SOURCE_FOLDER"
 
verbose "\nCommande Archive : tar cjf $NAME -C $PARENT_FOLDER $SOURCE_FOLDER"
Ligne 130 : Ligne 138 :
 
tar cjf $TAR_FOLDER/$NAME -C $PARENT_FOLDER $SOURCE_FOLDER
 
tar cjf $TAR_FOLDER/$NAME -C $PARENT_FOLDER $SOURCE_FOLDER
 
fi
 
fi
 
+
 
if [ $? != 0 ]
 
if [ $? != 0 ]
 
then
 
then
Ligne 137 : Ligne 145 :
 
verbose "Création de l'archive \t\t\t$VERT[OK]$NORMAL"
 
verbose "Création de l'archive \t\t\t$VERT[OK]$NORMAL"
 
fi
 
fi
 
+
 
#Copie de l'archive  vers le serveur renseigne en parametre
 
#Copie de l'archive  vers le serveur renseigne en parametre
if [ "$TAR_FOLDER" == "" ]
+
#Si pas de TARGET specifie, on ne lance pas la commande scp
 +
if [ -z $TARGET ]
 
then
 
then
verbose "\nCommande Transfert : scp $NAME $TARGET"
+
verbose "$VERT"
scp $NAME $TARGET > /dev/null 2>&1
+
verbose "Pas de copie distante$NORMAL"
 
else
 
else
verbose "\nCommande Transfert : scp $TAR_FOLDER/$NAME $TARGET"
+
if [ "$TAR_FOLDER" == "" ]
scp $TAR_FOLDER/$NAME $TARGET > /dev/null 2>&1
+
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
 +
 
 
fi
 
fi
 
   
 
   
if [ $? != 0 ]
+
#Suppresion du dump local
 +
#Si pas de TARGET specifie, on ne supprime pas le DUMP
 +
if [ -z $TARGET ]
 
then
 
then
         verbose "Transfert Archive \t\t\t$ROUGE[KO]$NORMAL"
+
verbose "$VERT"
 +
         verbose "Pas de Suppression Backup local$NORMAL"
 
else
 
else
         verbose "Transfert Archive  \t\t\t$VERT[OK]$NORMAL"
+
         if [ "$TAR_FOLDER" == "" ]
fi
+
        then
 +
                rm -f $NAME
 +
        else
 +
                rm -f $TAR_FOLDER/$NAME
 +
        fi  
 
   
 
   
#Suppresion du dump local
+
         if [ $? != 0 ]
if [ "$TAR_FOLDER" == "" ]
+
        then
then
+
                verbose "Suppression Backup local \t\t$ROUGE[KO]$NORMAL"
         rm -f $NAME
+
        else
else
+
                verbose "Suppression Backup local \t\t$VERT[OK]$NORMAL"
        rm -f $TAR_FOLDER/$NAME
+
        fi
fi
 
 
 
if [ $? != 0 ]
 
then
 
        verbose "Suppression Backup local \t\t$ROUGE[KO]$NORMAL"
 
else
 
        verbose "Suppression Backup local \t\t$VERT[OK]$NORMAL"
 
 
fi
 
fi
 
</syntaxhighlight>
 
</syntaxhighlight>
 
[[Catégorie:Scripts System]]
 
[[Catégorie:Scripts System]]

Version actuelle datée du 28 octobre 2015 à 11:57

Ce script permet d'archiver et sauvegardé les fichiers d'une application

Utilisation

Utilisation du script :

-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

Si l'on veut transférer la sauvegarde

script_backup_applicatif -s /opt/redmine-2.6.0 -n Redmine -t backup@192.168.1.1:/mnt/backup_server

Si l'on veut une sauvegarde en local

script_backup_applicatif -s /opt/redmine-2.6.0 -n Redmine -f /opt/backup/Redmine

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

#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 [ -z $NAME  ]
then
	DATE=`date +"%Y"-"%m"-"%d"`
	NAME=${SOURCE_FOLDER}-${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 [ -z $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
#Si pas de TARGET specifie, on ne lance pas la commande scp
if [ -z $TARGET ]
then
	verbose "$VERT"
	verbose "Pas de copie distante$NORMAL"
else
	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

fi
 
#Suppresion du dump local
#Si pas de TARGET specifie, on ne supprime pas le DUMP
if [ -z $TARGET ]
then
	verbose "$VERT"
        verbose "Pas de Suppression Backup local$NORMAL"
else
        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
fi