Statistiques
| Révision :

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