Script backup applicatif : Différence entre versions
(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... ») |
(→Code) |
||
| (4 révisions intermédiaires par le même utilisateur non affichées) | |||
| Ligne 3 : | Ligne 3 : | ||
<pre> | <pre> | ||
Utilisation du script : | Utilisation du script : | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | Exemple | + | -s Dossier source de l'application à sauvegarder (sans le / de fin) |
| − | script_backup_applicatif -s /opt/redmine-2.6.0 -n Redmine -t | + | |
| + | -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 | ||
| − | + | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
#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 [ | + | if [ -z $NAME ] |
then | then | ||
DATE=`date +"%Y"-"%m"-"%d"` | DATE=`date +"%Y"-"%m"-"%d"` | ||
| − | NAME=${ | + | 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 [ | + | if [ -z $TAR_FOLDER ] |
then | then | ||
| − | verbose "\nCommande | + | verbose "\nCommande Archive : tar cjf $NAME -C $PARENT_FOLDER $SOURCE_FOLDER" |
tar cjf $NAME -C $PARENT_FOLDER $SOURCE_FOLDER | tar cjf $NAME -C $PARENT_FOLDER $SOURCE_FOLDER | ||
else | else | ||
| 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 [ | + | #Si pas de TARGET specifie, on ne lance pas la commande scp |
| + | if [ -z $TARGET ] | ||
then | then | ||
| − | verbose " | + | verbose "$VERT" |
| − | + | verbose "Pas de copie distante$NORMAL" | |
else | else | ||
| − | verbose "\nCommande Transfert : scp $TAR_FOLDER/$NAME $TARGET" | + | 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 | fi | ||
| − | if [ $ | + | #Suppresion du dump local |
| + | #Si pas de TARGET specifie, on ne supprime pas le DUMP | ||
| + | if [ -z $TARGET ] | ||
then | then | ||
| − | verbose " | + | verbose "$VERT" |
| + | verbose "Pas de Suppression Backup local$NORMAL" | ||
else | else | ||
| − | + | if [ "$TAR_FOLDER" == "" ] | |
| − | fi | + | 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 | |
| − | |||
| − | |||
| − | if [ $? != 0 ] | ||
| − | then | ||
| − | |||
| − | else | ||
| − | |||
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