Révision 45 bin/zfs-snapshot
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