====== Différences ======
Cette page vous affiche les différences entre la révision choisie et la version actuelle de la page.
sauvegarde [2013/12/24 10:40] r.doiteau |
sauvegarde [2019/05/11 14:35] (Version actuelle) |
||
---|---|---|---|
Ligne 209: | Ligne 209: | ||
===== Déroulement de la sauvegarde et de la restauration ===== | ===== Déroulement de la sauvegarde et de la restauration ===== | ||
- | ==== Script ==== | + | == La Sauvegarde == |
+ | |||
+ | La sauvegarde se déroule en plusieurs étapes: | ||
+ | ==Initialisation et créations des différents dossiers et fichiers:== | ||
+ | __script_init.sh__: | ||
+ | Les dossiers crées sont: | ||
+ | -mnt/home => point de montage du FreeNas. | ||
+ | -mnt/sauvegarde/complete => la sauvegarde complète sera placée ici. | ||
+ | -mnt/sauvegarde/incrementale => les sauvegardes incrémentielles seront placées ici. | ||
+ | -mnt/sauvegarde/script => les scripts seront placés ici. | ||
+ | |||
+ | Le script Initialisation créer les fichiers scripts suivants dans le dossier mnt/sauvegarde/script: | ||
+ | |||
+ | {{::script.png|}} | ||
+ | |||
+ | __ConfNas.txt__: Contient l'adresse ip du serveur FreeNas et la où il est monté. | ||
+ | __sauvegarde.sh__: Programme principale de la sauvegarde qui fait appel au différents fonctions et variables nécessaires. Il contient également l'aide à l'utilisateur. | ||
+ | __script_conf.sh__: Inscrit dans le fichier ConfNas.txt la configuration du FreeNas (adresse Ip et point de montage.) | ||
+ | __script_listfichier.sh__: Lit le fichier de log et l'affiche. | ||
+ | __script_restauration.sh__: Fonctions et variables nécessaires à la restauration de la sauvegarde. | ||
+ | __script_sauvegarde.sh__: Fonctions et variables nécessaires à la sauvegarde. | ||
+ | |||
+ | ==== Fichier complet d'installation ==== | ||
{{::sauv.tar|}} | {{::sauv.tar|}} | ||
+ | |||
+ | ===== ReadMe ===== | ||
+ | |||
+ | <code=bash> | ||
+ | |||
+ | ################################################################## | ||
+ | # PROJET : SCRIPT DE SAUVEGARDE # | ||
+ | # FICHIER : README.txt # | ||
+ | # EQUIPE : M.BAILLEUL R.DOITEAU S.CHEVRIER M.CHANTELOUP # | ||
+ | ################################################################## | ||
+ | |||
+ | |||
+ | +------------------------------+ | ||
+ | |------- RESUME -------| | ||
+ | +------------------------------+ | ||
+ | |||
+ | Ce programme sauvegarde les répertoires utilisateurs tout les jours de façon incrémentale et fait une sauvegarde complète une fois par semaine. | ||
+ | Il envoie un mail à l'administrateur avec le détail de la sauvegarde. | ||
+ | |||
+ | |||
+ | +------------------------------+ | ||
+ | |------- SOMMAIRE -------| | ||
+ | +------------------------------+ | ||
+ | |||
+ | Installation | ||
+ | |_Prérequis | ||
+ | |_Installation du programme | ||
+ | Configuration | ||
+ | |_Configuration du programme | ||
+ | Utilisation | ||
+ | |_Usage | ||
+ | |||
+ | |||
+ | +------------------------------+ | ||
+ | |------- INSTALLATION -------| | ||
+ | +------------------------------+ | ||
+ | |||
+ | ---- Prérequis ---- | ||
+ | |||
+ | Il est nécessaire d'avoir un serveur de fichier (FreeNas), un serveur de sauvegarde (sous Debian 7) et des machines clientes (Windows 7 et/ou Debian 7) | ||
+ | Tout ceci dans le même réseau. | ||
+ | |||
+ | |||
+ | ---- Installation du programme ---- | ||
+ | |||
+ | - Télécharger le fichier sauv.tar | ||
+ | - Le décompresser avec la commande: tar xvf sauv.tar, il décompresse l'archive à l'emplacement du fichier sauv.tar. | ||
+ | - Allez dans PROJET_SAUVEGARDE. | ||
+ | - Lancer la commande: bash script_init.sh, il crée les dossiers et fichiers nécessaire au fonctionnement des sauvegardes et initialise l'environnement. | ||
+ | |||
+ | |||
+ | +------------------------------+ | ||
+ | |------- CONFIGURATION ------| | ||
+ | +------------------------------+ | ||
+ | |||
+ | ---- Configuration du programme ---- | ||
+ | |||
+ | - Pour lancer la configuration de la sauvegarde, lancer la commande: sauvegarde.sh -C -i "votre_ip_serveur" -m "votre_répertoire_source" | ||
+ | - L'installation à configurée crontab, de façon à ce que le script de sauvegarde soit lancé tous les jours. | ||
+ | - Pour modifier la fréquence ou pour desactiver la sauvegarde, il faut éditer /etc/crontab et commenter la dernière ligne ou la modifier en fonctions de la configuration souhaitée | ||
+ | |||
+ | |||
+ | +------------------------------+ | ||
+ | |------- UTILISATION --------| | ||
+ | +------------------------------+ | ||
+ | |||
+ | |||
+ | ---- Usage ---- | ||
+ | >sauvegarde.sh -h | ||
+ | |||
+ | Les options obligatoires : | ||
+ | |||
+ | |||
+ | -C , -i , -m , Configuration du serveur de fichier | ||
+ | [-i] XXX.XXX.XXX.XXX IP du serveur de fichiers | ||
+ | [-m] /rep Définit l'emplacement du répertoire source | ||
+ | |||
+ | |||
+ | -R, [-u],[-r],[-f],[-e],[-d], Restauration | ||
+ | [-u] user suivi du nom de l'utilisateur | ||
+ | [-r] repertoire suivi du nom du repertoire | ||
+ | [-f] fichier suivi du nom du fichier | ||
+ | [-e] .ext suivi de l'extension | ||
+ | [-d] date suivi de la date de récupération souhaité | ||
+ | |||
+ | |||
+ | -S, [-c] Sauvegarde des Répertoire personnels | ||
+ | [-c] force la sauvegarde complète | ||
+ | |||
+ | |||
+ | Exemple d'utilisation : | ||
+ | # Configuration du serveur de fichier | ||
+ | bash sauvegarde.sh -C -i 192.168.1.1 -m /mnt/vol0 | ||
+ | # Sauvegarde des répertoires utilisateurs | ||
+ | bash sauvegarde.sh -S | ||
+ | - Pour forcer une sauvegarde complete | ||
+ | bash sauvegarde.sh -S -c | ||
+ | # Restauration : | ||
+ | - De tous les fichier de l'utilisateur 'util1' avec l'extension .doc sauvegardé le 22/10/2013 | ||
+ | bash sauvegarde.sh -R -u util1 -f *.doc -d 10-22 | ||
+ | - Du repertoire personnel de util2 | ||
+ | bash sauvegarde.sh -R -u util2 | ||
+ | </code> | ||
+ | |||
+ | ===== Détails des différents scripts ===== | ||
+ | |||
+ | ==script_init.sh== | ||
+ | |||
+ | <code=bash> | ||
+ | #!/bin/sh | ||
+ | ################################################################## | ||
+ | # PROJET : SCRIPT DE SAUVEGARDE # | ||
+ | # FICHIER : script_init.sh # | ||
+ | # EQUIPE : M.BAILEUL R.DOITEAU S.CHEVRIER M.CHANTELOUP # | ||
+ | ################################################################## | ||
+ | |||
+ | |||
+ | REPSAVE=/mnt/sauvegarde | ||
+ | REPSAUVALL=$REPSAVE/complete | ||
+ | REPSAUVINC=$REPSAVE/incrementale | ||
+ | REPLOG=$REPSAVE/journal | ||
+ | REPSCRIPT=$REPSAVE/script | ||
+ | REPHOME=/mnt/home | ||
+ | |||
+ | ######################################################### CREATION REPERTOIRE ############################################################ | ||
+ | |||
+ | mkdir $REPSAVE | ||
+ | mkdir $REPSAUVALL | ||
+ | mkdir $REPSAUVINC | ||
+ | mkdir $REPLOG | ||
+ | mkdir $REPSCRIPT | ||
+ | mkdir $REPHOME | ||
+ | |||
+ | ############################################################## COPIE SCRIPT ############################################################## | ||
+ | |||
+ | cp ./data/script_sauvegarde.sh $REPSCRIPT/script_sauvegarde.sh | ||
+ | cp ./data/script_restauration.sh $REPSCRIPT/script_restauration.sh | ||
+ | cp ./data/script_conf.sh $REPSCRIPT/script_conf.sh | ||
+ | cp ./data/script_listfichier.sh $REPSCRIPT/script_listfichier.sh | ||
+ | cp ./data/sauvegarde.sh $REPSCRIPT/sauvegarde.sh | ||
+ | |||
+ | chmod 755 $REPSCRIPT/sauvegarde.sh | ||
+ | |||
+ | ################################################################ CRONTAB ################################################################# | ||
+ | |||
+ | echo "0 2 * * * root bash /mnt/sauvegarde/script/sauvegarde.sh -S" >>/etc/crontab | ||
+ | |||
+ | ################################################################ COMMANDE ################################################################ | ||
+ | |||
+ | echo "Pour renseigné l'adresse IP et le repertoire source de votre sauvegadre" | ||
+ | echo "Executez cette commande :" | ||
+ | echo "bash sauvegarde.sh -C -i (l'ip du serveur) -m (repertoire source)" | ||
+ | |||
+ | ################################################################## MSMTP ################################################################# | ||
+ | aptitude install msmtp -y --assume-yes | ||
+ | |||
+ | (echo "account default" | ||
+ | echo "tls on" | ||
+ | echo "host smtp.gmail.com" | ||
+ | echo "port 587" | ||
+ | echo "from doiteau.romain@gmail.com" | ||
+ | echo "auth on" | ||
+ | echo "user doiteau.romain" | ||
+ | echo "password ********" | ||
+ | echo "tls_starttls on" | ||
+ | echo "tls_certcheck on" | ||
+ | echo "tls_trust_file /etc/ssl/certs/ca-certificates.crt" | ||
+ | ) > /root/.msmtprc | ||
+ | |||
+ | ################################################################## PATH ################################################################## | ||
+ | |||
+ | varPATH=$PATH | ||
+ | echo "export PATH=/mnt/sauvegarde/script:$varPATH" >> /root/.bashrc | ||
+ | su | ||
+ | exit</code> | ||
+ | |||
+ | |||
+ | ==ConfNas.txt== | ||
+ | |||
+ | <code=bash> | ||
+ | 192.168.231.110 #Adresse du FreeNas | ||
+ | /mnt/vol0 #Point de montage du FreeNas | ||
+ | </code> | ||
+ | |||
+ | ==sauvegarde.sh== | ||
+ | |||
+ | <code=bash> | ||
+ | #!/bin/sh | ||
+ | ################################################################## | ||
+ | # PROJET : SCRIPT DE SAUVEGARDE # | ||
+ | # FICHIER : script_sauvegarde.sh # | ||
+ | # EQUIPE : M.BAILEUL R.DOITEAU S.CHEVRIER M.CHANTELOUP # | ||
+ | ################################################################## | ||
+ | |||
+ | |||
+ | ################################################################### | ||
+ | ############################ VARIABLES ############################ | ||
+ | ################################################################### | ||
+ | REPSAVE=/mnt/sauvegarde | ||
+ | REPSCRIPT=$REPSAVE/script | ||
+ | SAUVCOMP=0 | ||
+ | OPTSCRIPT="." | ||
+ | CIPNAS="." | ||
+ | CREPFNAS="." | ||
+ | USER=".*" | ||
+ | DOSSIER=".*" | ||
+ | FICHIER=".*" | ||
+ | EXTENSION=".*" | ||
+ | DATER=".*" | ||
+ | |||
+ | ################################################################### | ||
+ | ############################# OPTION ############################## | ||
+ | ################################################################### | ||
+ | |||
+ | #### Fonctions | ||
+ | usage() { | ||
+ | nom=`basename $0` | ||
+ | echo "Usage: bash sauvegarde.sh OPTION" | ||
+ | echo "Les options obligatoires :" | ||
+ | echo " " | ||
+ | echo " " | ||
+ | echo " -C , -i , -m , Configuration du serveur de fichier " | ||
+ | echo " [-i] XXX.XXX.XXX.XXX IP du serveur de fichiers " | ||
+ | echo " [-m] /rep Définit l'emplacement du répertoire source " | ||
+ | echo " " | ||
+ | echo " " | ||
+ | echo " -R, [-u],[-r],[-f],[-e],[-d], Restauration " | ||
+ | echo " [-u] user suivi du nom de l'utilisateur" | ||
+ | echo " [-r] repertoire suivi du nom du repertoire" | ||
+ | echo " [-f] fichier suivi du nom du fichier" | ||
+ | echo " [-e] .ext suivi de l'extension" | ||
+ | echo " [-d] date suivi de la date de récupération souhaité" | ||
+ | echo " " | ||
+ | echo " " | ||
+ | echo " -S, [-c] Sauvegarde des Répertoire personnels" | ||
+ | echo " [-c] force la sauvegarde complète " | ||
+ | echo " " | ||
+ | echo " " | ||
+ | echo "Exemple d'utilisation :" | ||
+ | echo " # Configuration du serveur de fichier" | ||
+ | echo " bash sauvegarde.sh -C -i 192.168.1.1 -m /mnt/vol0" | ||
+ | echo " # Sauvegarde des répertoires utilisateurs" | ||
+ | echo " bash sauvegarde.sh -S" | ||
+ | echo " - Pour forcer une sauvegarde complete" | ||
+ | echo " bash sauvegarde.sh -S -c" | ||
+ | echo " # Restauration :" | ||
+ | echo " - De tous les fichier de l'utilisateur 'util1' avec l'extension .doc sauvegardé le 22/10/2013" | ||
+ | echo " bash sauvegarde.sh -R -u util1 -f *.doc -d 10-22" | ||
+ | echo " - Du repertoire personnel de util2" | ||
+ | echo " bash sauvegarde.sh -R -u util2" | ||
+ | } | ||
+ | |||
+ | #### TEST ET LECTURE DES OPTIONS | ||
+ | ## Exeption de l'option -h ou --help | ||
+ | if [ $# -eq 1 -a "$1" = -h ] || [ $# -eq 1 -a "$1" = --help ] ; then usage; exit 2; fi | ||
+ | |||
+ | ## Test et Traitement des options | ||
+ | while getopts ":SRcCi:m:u:r:f:d:e:" option | ||
+ | do | ||
+ | case $option in | ||
+ | c) | ||
+ | if [ $OPTSCRIPT = "sauvegarde" ];then | ||
+ | echo "Sauvegarde complete forcé" | ||
+ | SAUVCOMP=1 | ||
+ | else | ||
+ | echo "l'option -c ne fonctionne qu'avec l'option -S" | ||
+ | echo "Saisissez « bash script_sauvegarde.sh --help » pour plus d'informations." | ||
+ | exit 2 | ||
+ | fi | ||
+ | ;; | ||
+ | C) | ||
+ | if [ $OPTSCRIPT = "." ];then | ||
+ | echo "Configuration Nas" | ||
+ | OPTSCRIPT="configuration" | ||
+ | else | ||
+ | echo "l'option -C n s'utilise pas avec les options -S ou -R" | ||
+ | echo "Saisissez « bash script_sauvegarde.sh --help » pour plus d'informations." | ||
+ | exit 2 | ||
+ | fi | ||
+ | ;; | ||
+ | d) | ||
+ | if [ $OPTSCRIPT = "restauration" ];then | ||
+ | DATER="$OPTARG.*" | ||
+ | else | ||
+ | echo "l'option -d ne fonctionne qu'avec l'option principale -R" | ||
+ | echo "Saisissez « bash script_sauvegarde.sh --help » pour plus d'informations." | ||
+ | exit 2 | ||
+ | fi | ||
+ | ;; | ||
+ | e) | ||
+ | if [ $OPTSCRIPT = "restauration" ];then | ||
+ | EXTENSION="$OPTARG.*" | ||
+ | else | ||
+ | echo "l'option -e ne fonctionne qu'avec l'option principale -R" | ||
+ | echo "Saisissez « bash script_sauvegarde.sh --help » pour plus d'informations." | ||
+ | exit 2 | ||
+ | fi | ||
+ | ;; | ||
+ | f) | ||
+ | if [ $OPTSCRIPT = "restauration" ];then | ||
+ | FICHIER="$OPTARG.*" | ||
+ | else | ||
+ | echo "l'option -f ne fonctionne qu'avec l'option principale -R" | ||
+ | echo "Saisissez « bash script_sauvegarde.sh --help » pour plus d'informations." | ||
+ | exit 2 | ||
+ | fi | ||
+ | ;; | ||
+ | i) | ||
+ | if [ $OPTSCRIPT = "configuration" ];then | ||
+ | echo $OPTARG |grep -Eq '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-4]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' | ||
+ | if [ $? = 0 ];then | ||
+ | CIPNAS=$OPTARG | ||
+ | else | ||
+ | echo "-i $OPTARG => IP Non Valide" | ||
+ | exit 1 | ||
+ | fi | ||
+ | else | ||
+ | echo "l'option -i ne fonctionne qu'avec l'option -C et -m" | ||
+ | echo "Saisissez « bash script_sauvegarde.sh --help » pour plus d'informations." | ||
+ | exit 2 | ||
+ | fi | ||
+ | ;; | ||
+ | m) | ||
+ | if [ $OPTSCRIPT = "configuration" ];then | ||
+ | CREPFNAS=$OPTARG | ||
+ | else | ||
+ | echo "l'option -m ne fonctionne qu'avec l'option -C et -i" | ||
+ | echo "Saisissez « bash script_sauvegarde.sh --help » pour plus d'informations." | ||
+ | exit 2 | ||
+ | fi | ||
+ | ;; | ||
+ | R) | ||
+ | if [ $OPTSCRIPT = "." ];then | ||
+ | OPTSCRIPT="restauration" | ||
+ | else | ||
+ | echo "l'option -R n s'utilise pas avec les options -S ou -C" | ||
+ | echo "Saisissez « bash script_sauvegarde.sh --help » pour plus d'informations." | ||
+ | exit 2 | ||
+ | fi | ||
+ | ;; | ||
+ | r) | ||
+ | if [ $OPTSCRIPT = "restauration" ];then | ||
+ | DOSSIER="$OPTARG.*" | ||
+ | else | ||
+ | echo "l'option -r ne fonctionne qu'avec l'option principale -R" | ||
+ | echo "Saisissez « bash script_sauvegarde.sh --help » pour plus d'informations." | ||
+ | exit 2 | ||
+ | fi | ||
+ | ;; | ||
+ | S) | ||
+ | if [ $OPTSCRIPT = "." ];then | ||
+ | echo "Sauvegarde des répertoires utilisateur" | ||
+ | OPTSCRIPT="sauvegarde" | ||
+ | else | ||
+ | echo "l'option -S n s'utilise pas avec les options -C ou -R" | ||
+ | echo "Saisissez « bash script_sauvegarde.sh --help » pour plus d'informations." | ||
+ | exit 2 | ||
+ | fi | ||
+ | ;; | ||
+ | u) | ||
+ | if [ $OPTSCRIPT = "restauration" ];then | ||
+ | USER="$OPTARG.*" | ||
+ | else | ||
+ | echo "l'option -u ne fonctionne qu'avec l'option principale -R" | ||
+ | echo "Saisissez « bash script_sauvegarde.sh --help » pour plus d'informations." | ||
+ | exit 2 | ||
+ | fi | ||
+ | ;; | ||
+ | :) | ||
+ | echo "L'option $OPTARG requiert un argument" | ||
+ | exit 1 | ||
+ | ;; | ||
+ | \?) | ||
+ | echo "$OPTARG : option invalide" | ||
+ | echo "Saisissez « bash script_sauvegarde.sh --help » pour plus d'informations." | ||
+ | exit 2 | ||
+ | ;; | ||
+ | esac | ||
+ | done | ||
+ | |||
+ | |||
+ | ################################################################### | ||
+ | ########################### DEBUT SCRIPT ########################## | ||
+ | ################################################################### | ||
+ | |||
+ | ## Définit l'action selon les options passé dans la commande | ||
+ | case $OPTSCRIPT in | ||
+ | sauvegarde) | ||
+ | if [ $SAUVCOMP = 1 ];then | ||
+ | bash $REPSCRIPT/script_sauvegarde.sh -f | ||
+ | else | ||
+ | bash $REPSCRIPT/script_sauvegarde.sh | ||
+ | fi | ||
+ | ;; | ||
+ | restauration) | ||
+ | echo "RESTAURATION" | ||
+ | #echo "-u $USER -r $DOSSIER -f $FICHIER -e $EXTENSION -d $DATER" | ||
+ | bash $REPSCRIPT/script_restauration.sh -u "$USER" -r "$DOSSIER" -f "$FICHIER" -e "$EXTENSION" -d "$DATER" | ||
+ | ;; | ||
+ | configuration) | ||
+ | echo "..." | ||
+ | if [ $CIPNAS = "." ] || [ $CREPFNAS = "." ];then | ||
+ | echo "Il faut renseigné l'option -i suivi de l'ip du Serveur de fichier et l'option -m suivi du chemin du montage NFS" | ||
+ | echo "Saisissez « bash script_sauvegarde.sh --help » pour plus d'informations." | ||
+ | exit 2 | ||
+ | else | ||
+ | bash $REPSCRIPT/script_conf.sh $CIPNAS $CREPFNAS | ||
+ | echo "Effectué!" | ||
+ | fi</code> | ||
+ | |||
+ | ==script_conf.sh== | ||
+ | |||
+ | <code=bash>#!/bin/sh | ||
+ | ################################################################## | ||
+ | # PROJET : SCRIPT DE SAUVEGARDE # | ||
+ | # FICHIER : script_conf.sh # | ||
+ | # EQUIPE : M.BAILEUL R.DOITEAU S.CHEVRIER M.CHANTELOUP # | ||
+ | ################################################################## | ||
+ | |||
+ | FICCONF=/mnt/sauvegarde/script/ConfNas | ||
+ | echo "$1" >$FICCONF | ||
+ | echo "$2" >>$FICCONF</code> | ||
+ | |||
+ | ==script_listfichier.sh== | ||
+ | |||
+ | <code=bash>#!/bin/sh | ||
+ | ################################################################## | ||
+ | # PROJET : SCRIPT DE SAUVEGARDE # | ||
+ | # FICHIER : script_listfichier.sh # | ||
+ | # EQUIPE : M.BAILEUL R.DOITEAU S.CHEVRIER M.CHANTELOUP # | ||
+ | ################################################################## | ||
+ | |||
+ | ################################################################### | ||
+ | ############################ VARIABLES ############################ | ||
+ | ################################################################### | ||
+ | FICHIER=$1 | ||
+ | REPSAUV=$2 | ||
+ | NOMSAUV=$3 | ||
+ | REPLOG=$4 | ||
+ | |||
+ | ################################################################### | ||
+ | ######################### DEBUT PROGRAMME ######################### | ||
+ | ################################################################### | ||
+ | #Lecture du fichier | ||
+ | echo "-------------------------- $NOMSAUV --------------------------" > $REPLOG/tmplistefic_modif.log | ||
+ | for LIGNE in $(cat $FICHIER); do | ||
+ | echo "$LIGNE:$REPSAUV:$NOMSAUV" >> $REPLOG/tmplistefic_modif.log | ||
+ | done</code> | ||
+ | |||
+ | ==script_restauration.sh== | ||
+ | |||
+ | <code=bash> | ||
+ | #!/bin/sh | ||
+ | ################################################################## | ||
+ | # PROJET : SCRIPT DE SAUVEGARDE # | ||
+ | # FICHIER : script_restauration.sh # | ||
+ | # EQUIPE : M.BAILEUL R.DOITEAU S.CHEVRIER M.CHANTELOUP # | ||
+ | ################################################################## | ||
+ | |||
+ | |||
+ | ################################################################### | ||
+ | ############################ VARIABLES ############################ | ||
+ | ################################################################### | ||
+ | REPSAVE=/mnt/sauvegarde | ||
+ | REPSAUVALL=$REPSAVE/complete | ||
+ | REPSAUVINC=$REPSAVE/incrementale | ||
+ | REPLOG=$REPSAVE/journal | ||
+ | REPSCRIPT=$REPSAVE/script | ||
+ | IPNAS=`head -1 $REPSCRIPT/ConfNas` | ||
+ | REPFNAS=`tail -1 $REPSCRIPT/ConfNas` | ||
+ | REPHOME=/mnt/home | ||
+ | SAVELIST=$REPSAUVINC/.savelist | ||
+ | DATESAUV=`date +%Y_sem-%W_date-%m-%d_%Hh-%Mm` | ||
+ | FICLOG=$REPLOG/detail_$DATESAUV.log | ||
+ | SEMAINE=`date +%W` | ||
+ | |||
+ | ################################################################### | ||
+ | ############################# OPTION ############################## | ||
+ | ################################################################### | ||
+ | ## Test et Traitement des options | ||
+ | while getopts ":u:r:f:d:e:" option | ||
+ | do | ||
+ | case $option in | ||
+ | d) | ||
+ | DATER=$OPTARG | ||
+ | ;; | ||
+ | e) | ||
+ | EXTENSION=$OPTARG | ||
+ | ;; | ||
+ | f) | ||
+ | FICHIER=$OPTARG | ||
+ | ;; | ||
+ | r) | ||
+ | DOSSIER=$OPTARG | ||
+ | ;; | ||
+ | u) | ||
+ | USER=$OPTARG | ||
+ | ;; | ||
+ | esac | ||
+ | done | ||
+ | |||
+ | |||
+ | |||
+ | ################################################################### | ||
+ | ########################### DEBUT SCRIPT ########################## | ||
+ | ################################################################### | ||
+ | #echo "USER : $USER" | ||
+ | #echo "DOSSIER : $DOSSIER" | ||
+ | #echo "FICHIER : $FICHIER" | ||
+ | #echo "EXTENSION : $EXTENSION" | ||
+ | #echo "DATER : $DATER" | ||
+ | |||
+ | #echo "egrep '^/mnt/home/$USER$DOSSIER$FICHIER$EXTENSION$DATER' $REPLOG/listfichier_s$SEMAINE.log &> $REPLOG/tmpRest.log" | ||
+ | mount -t nfs $IPNAS:$REPFNAS $REPHOME | ||
+ | var=/mnt/home/$USER$DOSSIER$FICHIER$EXTENSION$DATER | ||
+ | egrep $var $REPLOG/listfichier_s$SEMAINE.log &> $REPLOG/tmpRest.log | ||
+ | while read ligne;do | ||
+ | FIC=`echo "$ligne"|cut -d":" -f1` | ||
+ | REPS=`echo "$ligne"|cut -d":" -f2` | ||
+ | NOMS=`echo "$ligne"|cut -d":" -f3` | ||
+ | #echo | ||
+ | #echo "fichier : $FIC" | ||
+ | #echo "REP : $REPS" | ||
+ | #echo "NOM : $NOMS" | ||
+ | if [ $REPS = CPT ];then | ||
+ | REPTAR=$REPSAUVALL | ||
+ | else | ||
+ | REPTAR=$REPSAUVINC | ||
+ | fi | ||
+ | #echo "tar xPvf $REPTAR/$NOMS $FIC" | ||
+ | tar xvPfJ $REPTAR/$NOMS $FIC | ||
+ | done < $REPLOG/tmpRest.log | ||
+ | rm $REPLOG/tmpRest.log | ||
+ | umount $REPHOME</code> | ||
+ | |||
+ | ==script_sauvegarde.sh== | ||
+ | |||
+ | <code=bash>#!/bin/sh | ||
+ | ################################################################## | ||
+ | # PROJET : SCRIPT DE SAUVEGARDE # | ||
+ | # FICHIER : script_sauvegarde.sh # | ||
+ | # EQUIPE : M.BAILEUL R.DOITEAU S.CHEVRIER M.CHANTELOUP # | ||
+ | ################################################################## | ||
+ | |||
+ | |||
+ | ################################################################### | ||
+ | ################### TEST ET LECTURE DES OPTIONS ################### | ||
+ | ################################################################### | ||
+ | SAUVCOMP=0 | ||
+ | # Test et Traitement des options | ||
+ | while getopts "f" option | ||
+ | do | ||
+ | case $option in | ||
+ | f) | ||
+ | #echo "Sauvegarde Complète forcée" | ||
+ | echo "..." | ||
+ | SAUVCOMP=1 | ||
+ | ;; | ||
+ | esac | ||
+ | done | ||
+ | |||
+ | |||
+ | ################################################################### | ||
+ | ############################ VARIABLES ############################ | ||
+ | ################################################################### | ||
+ | REPSAVE=/mnt/sauvegarde | ||
+ | REPSAUVALL=$REPSAVE/complete | ||
+ | REPSAUVINC=$REPSAVE/incrementale | ||
+ | REPLOG=$REPSAVE/journal | ||
+ | REPSCRIPT=$REPSAVE/script | ||
+ | IPNAS=`head -1 $REPSCRIPT/ConfNas` | ||
+ | REPFNAS=`tail -1 $REPSCRIPT/ConfNas` | ||
+ | REPHOME=/mnt/home | ||
+ | SAVELIST=$REPSAUVINC/.savelist | ||
+ | DATESAUV=`date +%Y_sem-%W_date-%m-%d_%Hh-%Mm` | ||
+ | FICLOG=$REPLOG/detail_$DATESAUV.log | ||
+ | JOURSAUVALL=lundi | ||
+ | JOURJ=`date +%A` | ||
+ | SEMAINE=`date +%W` | ||
+ | |||
+ | ################################################################### | ||
+ | ########################### DEBUT SCRIPT ########################## | ||
+ | ################################################################### | ||
+ | |||
+ | ## Sauvegarde des répertoires utilisateurs | ||
+ | echo "subject: Sauvegarde du `date`">$FICLOG | ||
+ | echo "________________________________ Déroulement de la dernière sauvegarde effectué________________________________" >>$FICLOG | ||
+ | echo "******Démontage de /mnt/home, dans la cas ou il serait déja monté(par exemple lors de test sur le serveur BackUp" >>$FICLOG | ||
+ | umount /mnt/home &>>$FICLOG | ||
+ | echo "******Montage nfs du FREENAS vers /mnt/home" >>$FICLOG | ||
+ | mount -t nfs $IPNAS:$REPFNAS $REPHOME &>>$FICLOG | ||
+ | if [ $? = 0 ];then | ||
+ | echo "****Le montage c'est effectué corectement, On va regardé si il s'agit du jour de sauvegarde complete ou incrementale" >>$FICLOG | ||
+ | echo "----------------------------------------------- DEBUT DE LA SAUVEGARDE -----------------------------------------------" >>$FICLOG | ||
+ | if [ $JOURSAUVALL = $JOURJ ] || [ $SAUVCOMP = 1 ];then | ||
+ | echo "......" | ||
+ | echo "**Sauvegarde COMPLETE" >>$FICLOG | ||
+ | rm -fv $SAVELIST &>>$FICLOG | ||
+ | tar -v -J -P --create --file=$REPSAUVALL/sauv_$DATESAUV.tar.xz --listed-incremental=$SAVELIST $REPHOME &>$REPLOG/tmpTar.log | ||
+ | cat $REPLOG/tmpTar.log &>>$FICLOG | ||
+ | grep ^$REPHOME $REPLOG/tmpTar.log >$REPLOG/tmpListFic2.log | ||
+ | grep -v '/$' $REPLOG/tmpListFic2.log >$REPLOG/tmpListFic.log | ||
+ | bash $REPSCRIPT/script_listfichier.sh $REPLOG/tmpListFic.log CPT sauv_$DATESAUV.tar.xz $REPLOG | ||
+ | cat $REPLOG/tmplistefic_modif.log >> $REPLOG/listfichier_s$SEMAINE.log | ||
+ | else | ||
+ | echo ".." | ||
+ | echo "**Sauvegarde INCEMENTALE" >>$FICLOG | ||
+ | tar -v -P -J --create --file=$REPSAUVINC/sauv_$DATESAUV.tar.xz --listed-incremental=$SAVELIST $REPHOME &>$REPLOG/tmpTar.log | ||
+ | cat $REPLOG/tmpTar.log &>>$FICLOG | ||
+ | grep ^$REPHOME $REPLOG/tmpTar.log >>$REPLOG/tmpListFic2.log | ||
+ | grep -v '/$' $REPLOG/tmpListFic2.log >$REPLOG/tmpListFic.log | ||
+ | bash $REPSCRIPT/script_listfichier.sh $REPLOG/tmpListFic.log INC sauv_$DATESAUV.tar.xz $REPLOG | ||
+ | cat $REPLOG/tmplistefic_modif.log >> $REPLOG/listfichier_s$SEMAINE.log | ||
+ | fi | ||
+ | rm $REPLOG/tmp* | ||
+ | echo "." | ||
+ | echo "----------------------------------------------- FIN DE LA SAUVEGARDE -----------------------------------------------" >>$FICLOG | ||
+ | echo "Effectué!" | ||
+ | else | ||
+ | echo "Erreur montage nfs!!!" > $REPLOG/mail.log | ||
+ | fi | ||
+ | umount $REPHOME | ||
+ | cat "$FICLOG" | msmtp doiteau.romain@gmail.com</code> | ||