Révision 45

bin/zfs-snapshot (revision 45)
1 1
#!/bin/bash
2 2
# $Id$
3 3

  
4
function check_env_volume {
5
#*** CHECK DE L'ENVIRONNEMENT ***
6

  
7
if [ ! -d "/mnt/snapshot" ]
8
then
9
   mkdir -p /mnt/snapshot
10
   if [ $? -eq 1 ]
11
   then
12
      echo "/!\\ Probleme lors de la creation de /mnt/snapshot /!\\" 1>&2
13
      exit 1
14
   fi
15
fi
16
#*** FIN DU CHECK DE L'ENVIRONNEMENT ***
17
}
18

  
19
function check_env_filesystem {
20
echo "**** $1"
21
if [ "$#" -eq 0 ]
22
then
23
   echo "/!\\ Le fichier de configuration est manquant /!\\" 1>&2
24
   exit 1
25
fi 
26

  
27
if [ ! -f $1 ]
28
then
29
   echo "/!\\ Le fichier de configuration n'existe pas /!\\" 1>&2
30
   exit 1
31
fi
32
NAME_VOL=$(cat $1 |grep "name" |cut -d"=" -f2)
33
TYPE_ZFS=$(cat $1 |grep "type" |cut -d"=" -f2)
34
NB_SNAP=$(cat $1 |grep "nbsnapshots"|cut -d"=" -f2)
35
if [ "$NAME_VOL" = "" ] || [ "$TYPE_ZFS" = "" ] || [ "$NB_SNAP" = "" ]
36
then
37
   echo "/!\\ Probleme le fichier de configuration est incoherent ou incomplet /!\\" 1>&2
38
   exit 1
39
fi
40

  
41

  
42
}
43

  
44 4
function create_snapshot_volume {
45 5
#*** ETAPE DE CREATION DU SNAPSHOT ***#
46 6

  
47 7
echo ""
48
echo "*** Snapshot ZFS pour : $NAME_VOL"
49
echo "*** Type de volume ZFS : $TYPE_ZFS"
8
echo "*** Snapshot ZFS from : $NAME_VOL"
9
echo "*** ZFS Type : $TYPE_ZFS"
50 10
echo ""
51 11

  
52
if [ "$TYPE_ZFS" = "volume" ]
53
then
54
   if [ ! -d /mnt/snapshot/$NAME_VOL ]
55
   then
56
      mkdir -p /mnt/snapshot/$NAME_VOL
57
   fi
58
   #mount -o ro /dev/zvol/$NAME_VOL /mnt/snapshot/$NAME_VOL
59
   #if [ $? -eq 0 ]
60
   #then
61
   #   echo "*** Mount en lecture seule de $NAME_VOL [OK]"
62
   #else
63
   #   echo "/!\\ Probleme lors de la tentative de mount de $NAME_VOL sur /mnt/snapshot/$NAME_VOL /!\\" 1>&2
64
   #   exit 1
65
   #fi
66
fi
67

  
68
echo "*** Creation du snapshot pour $NAME_VOL"
12
echo "*** Snapshot Creation from $NAME_VOL"
69 13
ZDATE=$(date +%Y%m%d%H%M%S)
70 14
/sbin/zfs snapshot $NAME_VOL@snapshot-$ZDATE
71 15
echo ""
......
76 20
#*** ETAPE DE CREATION DU SNAPSHOT ***#
77 21

  
78 22
echo ""
79
echo "*** Snapshot ZFS pour : $NAME_VOL"
80
echo "*** Type de volume ZFS : $TYPE_ZFS"
23
echo "*** Snapshot ZFS from : $NAME_VOL"
24
echo "*** ZFS Type : $TYPE_ZFS"
81 25
echo ""
82
echo "*** Creation du snapshot pour $NAME_VOL"
26
echo "*** Snapshot Creation from $NAME_VOL"
83 27
ZDATE=$(date +%Y%m%d%H%M%S)
84 28
/sbin/zfs snapshot $NAME_VOL@snapshot-$ZDATE
85 29
echo ""
......
87 31
}
88 32

  
89 33

  
90
function check_after_snapshot_volume {
91
#*** ETAPE DE VERIFICATION ***#
92
echo "*** Umount du volume /mnt/snapshot/$NAME_VOL ..."
93
umount /mnt/snapshot/$NAME_VOL
94
if [ $? -eq 1 ]
95
then
96
   echo "/!\\ Probleme lors du demontage du volume $NAME_VOL /!\\" 1>&2
97
fi
98

  
99
mount -o ro /dev/zvol/$NAME_VOL@snapshot-$ZDATE /mnt/snapshot/$NAME_VOL
100
if [ $? -eq 0 ]
101
then
102
   echo "*** Creation du snapshot et verification du montage du snapshot /dev/zvol/$NAME_VOL@snapshot-$ZDATE [OK]"
103
   umount /mnt/snapshot/$NAME_VOL
104
   if [ $? -eq 1 ]
105
   then
106
      echo "/!\\ Probleme lors du demontage du volume $NAME_VOL /!\\" 1>&2
107
   fi
108

  
109
else
110
   echo "/!\\ Probleme avec lors de la creation ou du snapshot : commande de destruction de /dev/zvol/$NAME_VOL@snapshot-$ZDATE /!\\"
111
   /sbin/zfs destroy $NAME_VOL@snapshot-$ZDATE
112
   if [ $? -eq 0 ]
113
   then
114
      echo "*** Suppression du snapshot $NAME_VOL@snapshot-$ZDATE [OK]"
115
   else
116
      echo "/!\\ Suppression du snapshot $NAME_VOL@snapshot-$ZDATE [ERROR]. A TRAITER DANS LES PLUS BREFS DELAIS !!!" 1>&2
117
   fi
118
fi
119
#*** FIN ETAPE DE VERIFICATION ***#
120
}
121

  
122

  
123 34
function del_old_snapshot {
124 35
#*** ETAPE SUPPRESSION DES SNAPSHOTS OBSELETES ***#
125 36
echo ""
......
150 61
echo "**** $1"
151 62
if [ "$#" -eq 0 ]
152 63
then
153
   echo "/!\\ Le fichier de configuration est manquant /!\\" 1>&2
64
   echo "/!\\ File Configuration missing ... /!\\" 1>&2
154 65
   exit 1
155 66
fi 
156 67

  
157 68
if [ ! -f $1 ]
158 69
then
159
   echo "/!\\ Le fichier de configuration n'existe pas /!\\" 1>&2
70
   echo "/!\\ File Configuration does not exist /!\\" 1>&2
160 71
   exit 1
161 72
fi
162 73

  
......
165 76
NB_SNAP=$(cat $1 |grep "nbsnapshots"|cut -d"=" -f2)
166 77
if [ "$NAME_VOL" = "" ] || [ "$TYPE_ZFS" = "" ] || [ "$NB_SNAP" = "" ]
167 78
then
168
   echo "/!\\ Probleme le fichier de configuration est incoherent ou incomplet /!\\" 1>&2
79
   echo "/!\\ Problem with the Configuration File : incoherence data or incomplete /!\\" 1>&2
169 80
   exit 1
170 81
fi
171 82

  
172 83
if [ "$TYPE_ZFS" == "volume" ]
173 84
then
174
   check_env_volume
175 85
   create_snapshot_volume
176
   #check_after_snapshot_volume
177 86
   del_old_snapshot
178 87

  
179 88

  

Formats disponibles : Unified diff