root / bin / zfs-snapshot @ 45
Historique | Voir | Annoter | Télécharger (2,22 ko)
1 |
#!/bin/bash |
---|---|
2 |
# $Id: zfs-snapshot 45 2013-10-09 13:18:57Z kreverch $ |
3 |
|
4 |
function create_snapshot_volume { |
5 |
#*** ETAPE DE CREATION DU SNAPSHOT ***# |
6 |
|
7 |
echo "" |
8 |
echo "*** Snapshot ZFS from : $NAME_VOL" |
9 |
echo "*** ZFS Type : $TYPE_ZFS" |
10 |
echo "" |
11 |
|
12 |
echo "*** Snapshot Creation from $NAME_VOL" |
13 |
ZDATE=$(date +%Y%m%d%H%M%S) |
14 |
/sbin/zfs snapshot $NAME_VOL@snapshot-$ZDATE |
15 |
echo "" |
16 |
#*** FIN ETAPE DE CREATION DU SNAPSHOT ***# |
17 |
} |
18 |
|
19 |
function create_snapshot_filesystem { |
20 |
#*** ETAPE DE CREATION DU SNAPSHOT ***# |
21 |
|
22 |
echo "" |
23 |
echo "*** Snapshot ZFS from : $NAME_VOL" |
24 |
echo "*** ZFS Type : $TYPE_ZFS" |
25 |
echo "" |
26 |
echo "*** Snapshot Creation from $NAME_VOL" |
27 |
ZDATE=$(date +%Y%m%d%H%M%S) |
28 |
/sbin/zfs snapshot $NAME_VOL@snapshot-$ZDATE |
29 |
echo "" |
30 |
#*** FIN ETAPE DE CREATION DU SNAPSHOT ***# |
31 |
} |
32 |
|
33 |
|
34 |
function del_old_snapshot { |
35 |
#*** ETAPE SUPPRESSION DES SNAPSHOTS OBSELETES ***# |
36 |
echo "" |
37 |
CPT_SNAP=$(/sbin/zfs list -t snapshot -r $NAME_VOL |cut -d" " -f1 |grep -i $NAME_VOL\@ |wc -l) |
38 |
echo "*** Le nombre de snapshot pour $NAME_VOL est : $CPT_SNAP" |
39 |
/sbin/zfs list -t snapshot -r $NAME_VOL |
40 |
|
41 |
if [ $CPT_SNAP -gt $NB_SNAP ] |
42 |
then |
43 |
echo "*** Detection du snapshot le plus ancien" |
44 |
for ID_SNAP_OLDER in $(/sbin/zfs list -t snapshot -r $NAME_VOL |cut -d" " -f1 |grep -i $NAME_VOL\@) |
45 |
do |
46 |
echo "*** Le snapshot le plus ancien est : $ID_SNAP_OLDER" |
47 |
break |
48 |
done |
49 |
/sbin/zfs destroy $ID_SNAP_OLDER |
50 |
if [ $? -eq 0 ] |
51 |
then |
52 |
echo "*** Suppression du snapshot $ID_SNAP_OLDER [OK]" |
53 |
else |
54 |
echo "/!\\ Suppression du snapshot $ID_SNAP_OLDER [ERROR]." 1>&2 |
55 |
fi |
56 |
|
57 |
fi |
58 |
#*** FIN ETAPE SUPPRESSION DES SNAPSHOTS OBSELETES ***# |
59 |
} |
60 |
|
61 |
echo "**** $1" |
62 |
if [ "$#" -eq 0 ] |
63 |
then |
64 |
echo "/!\\ File Configuration missing ... /!\\" 1>&2 |
65 |
exit 1 |
66 |
fi |
67 |
|
68 |
if [ ! -f $1 ] |
69 |
then |
70 |
echo "/!\\ File Configuration does not exist /!\\" 1>&2 |
71 |
exit 1 |
72 |
fi |
73 |
|
74 |
NAME_VOL=$(cat $1 |grep "name" |cut -d"=" -f2) |
75 |
TYPE_ZFS=$(cat $1 |grep "type" |cut -d"=" -f2) |
76 |
NB_SNAP=$(cat $1 |grep "nbsnapshots"|cut -d"=" -f2) |
77 |
if [ "$NAME_VOL" = "" ] || [ "$TYPE_ZFS" = "" ] || [ "$NB_SNAP" = "" ] |
78 |
then |
79 |
echo "/!\\ Problem with the Configuration File : incoherence data or incomplete /!\\" 1>&2 |
80 |
exit 1 |
81 |
fi |
82 |
|
83 |
if [ "$TYPE_ZFS" == "volume" ] |
84 |
then |
85 |
create_snapshot_volume |
86 |
del_old_snapshot |
87 |
|
88 |
|
89 |
else |
90 |
if [ "$TYPE_ZFS" == "filesystem" ] |
91 |
then |
92 |
create_snapshot_filesystem |
93 |
del_old_snapshot |
94 |
|
95 |
fi |
96 |
fi |