Ticket #630: lnx_mondo_bkp_system.sh

File lnx_mondo_bkp_system.sh, 6.4 KB (added by presta.systeme, 12 years ago)
Line 
1#!/bin/sh
2#######################################################################################################################
3#
4# DESCRIPTION : LNX - Script de sauvegarde Mondorescue automatique
5#
6# OPTIONS DE LANCEMENT
7# arguments :
8# -dir /my/dir;/other/dir -- le dossier que l'on veut purger (obligatoire)
9# -recursive y -- recherche dans les sous-répertoire (par défaut: n)
10# -filetype all -- le(s) type(s) de fichier à purger, séparé par des ":" (par défaut: all)
11# -retention 180 -- au delà de combien de jours on liste (par défaut: 365)
12# -remove y -- lancer un rm sur la liste de fichiers (par défaut: n)
13# -log /tmp/testing -- log des opérations (par défaut: /root/admin/log)
14#
15# EXEMPLE : $0 -dir /my/dir:/other/dir -recursive y -filetype .tmp:.dmp.gz:.dmp -retention 180 -rm y -log /tmp/mylog.log
16#
17# LOG : /tmp/lnx_historique_purge.log (par défaut)
18#
19# MODIFICATIONS :
20# 2009/12 : v1 : Creation - Camille Bouly
21# 2010/04/07 : v1.1 : Modifications - BLE
22# Renommage du script
23# Correction des erreurs
24# Ajout usage
25#
26#######################################################################################################################
27
28#***************************************************************************
29# Variables FOR VTOM
30#***************************************************************************
31
32. ~/.bash_profile
33
34VERSION="1.1"
35ECHO_VERSION="## LNX - Script de sauvegarde Mondorescue automatique -- Version $VERSION"
36
37
38SYNTAX="
39$ECHO_VERSION
40
41USAGE : $0 [ options ]
42
43 -serv : Nom du serveur ou reside le partage NFS
44
45 -e : Filesystem ou directory que l'on veut exclure de la sauvegarde
46
47 -m [i][n] : Choix du Mode - soit i pour le mode ISO soit n pour le mode NFS
48
49 Exemple :
50 $0 -m i -serv pmk0vct10 -e /dev/mapper/VolGroup00-LogVol02 pmk1ora2:/oracle/NodhosImages /PMK1JBOSS10 /srv /tftpboot >> /var/log/lnx_mondo_bkp_system.log
51
52"
53
54
55
56
57#***************************************************************************
58# Functions
59#***************************************************************************
60
61error_syntax() {
62 echo ""
63 echo "$SYNTAX" >&2
64 exit 1
65}
66
67#***************************************************************************
68# Variables
69#***************************************************************************
70
71
72servername=`hostname`
73resmondo=1
74mesmondo=""
75NFS_DIRECTORY=mondo_bck
76MAIL_TO_SENDER=bruno.legrand@partenaire.pimkie.com
77
78#***************************************************************************
79# MAIN
80#
81#***************************************************************************
82#Verification du nombre d'arguments
83if [[ $# -lt 1 ]]
84then
85 error_syntax
86fi
87
88
89while [ "$1" != "" ]
90do
91 case $1 in
92 -e) exclude=$2
93 shift
94 while [ "$2" != "-m" ] && [ "$2" != "" ]
95 do
96 exclude="$exclude $2"
97 shift
98 done
99 exclude='"'"$exclude"'"'
100 shift ;;
101
102 -m) mode=$2
103 shift ;;
104
105 -serv) servnfs=$2
106 shift ;;
107
108 -version) echo "$ECHO_VERSION"; exit 49;;
109
110 -help) echo "$SYNTAX"; exit 50;;
111
112 esac
113 shift
114done
115
116
117#Mise en place du montage nfs
118
119service nfs restart
120
121if [ ! -d /mnt/mondo ] ; then
122 mkdir -v /mnt/mondo
123fi
124
125umount /mnt/mondo
126
127mount -t nfs $servnfs:/$NFS_DIRECTORY /mnt/mondo
128
129#Ajouter controle erreur
130
131
132
133#Creation du dossier de reception au nom du serveur s'il n'existe pas
134
135if [ ! -d /mnt/mondo/$servername ] ; then
136 mkdir -v /mnt/mondo/$servername
137fi
138
139#Archivage des Infos du serveur
140
141
142echo "Fiche d'identité de $servername" > /mnt/mondo/$servername//ID.txt
143echo -e "\n############## Uname -a #########################\n" >> /mnt/mondo/$servername/ID.txt
144uname -a >> /mnt/mondo/$servername/ID.txt
145echo -e "\n############## df -h #########################\n" >> /mnt/mondo/$servername/ID.txt
146df -h >> /mnt/mondo/$servername/ID.txt
147echo -e "\n############## fstab #########################\n" >> /mnt/mondo/$servername/ID.txt
148cat /etc/fstab >> /mnt/mondo/$servername/ID.txt
149echo -e "\n############## ifconfig -a #########################\n" >> /mnt/mondo/$servername/ID.txt
150ifconfig eth0 >> /mnt/mondo/$servername/ID.txt
151echo -e "\n############## OS Version #########################\n" >> /mnt/mondo/$servername/ID.txt
152cat /etc/redhat-release >> /mnt/mondo/$servername/ID.txt
153echo -e "\n############## modprobe.conf #########################\n" >> /mnt/mondo/$servername/ID.txt
154cat /etc/modprobe.conf >> /mnt/mondo/$servername/ID.txt
155echo -e "\n############## Fdisk -l #########################\n" >> /mnt/mondo/$servername/ID.txt
156fdisk -l >> /mnt/mondo/$servername/ID.txt
157echo -e "\n############## LVM #########################\n" >> /mnt/mondo/$servername/ID.txt
158pvdisplay >> /mnt/mondo/$servername/ID.txt
159vgdisplay >> /mnt/mondo/$servername/ID.txt
160lvdisplay >> /mnt/mondo/$servername/ID.txt
161echo -e "\n############## Exclus lors de la sauvegarde #########################\n" >> /mnt/mondo/$servername/ID.txt
162echo "$exclude" >> /mnt/mondo/$servername/ID.txt
163
164#On archive l'anciennne sauvegarde (si elle existe)
165
166if [ -e /mnt/mondo/$servername/mondorescue-1.iso ] ; then
167 mv /mnt/mondo/$servername/mondorescue-1.iso /mnt/mondo/$servername/mondorescue-1.old
168fi
169
170
171#C'est parti!
172
173if [ $mode = 'n' ]
174 then
175 echo "mode nfs"
176 mondoarchive -On $servnfs:/$NFS_DIRECTORY -d "$servername" -N -E "$exclude" -s 40g | tee /tmp/mesmondo.txt
177fi
178
179if [ $mode = 'i' ]
180 then
181 echo "mode iso"
182 mondoarchive -Oi -d /mnt/mondo/"$servername" -N -E "$exclude" -s 40g | tee /tmp/mesmondo.txt
183fi
184
185resmondo=`tail /tmp/mesmondo.txt | grep result | awk -F= '{print $2}'`
186
187
188#On verifie et on envoie un mail sur le statut de la sauvegarde
189
190if [ $resmondo != 0 ]
191 then
192 mail -s "Probleme sur l'archivage Mondorescue du serveur $servername ; voir /var/log/mondoarchive.log" $MAIL_TO_SENDER </tmp/mesmondo.txt
193 exit 1;
194 else
195 mail -s "OK pour l'archivage Mondorescue du serveur $servername" $MAIL_TO_SENDER </tmp/mesmondo.txt
196 if [ -e /mnt/mondo/$servername/mondorescue-1.old ] ; then
197 rm -f /mnt/mondo/$servername/mondorescue-1.old
198 fi
199 exit 0;
200fi
201
202
203