Statistiques
| Révision :

root / bin / zfs-snapshot @ 49

Historique | Voir | Annoter | Télécharger (2,25 ko)

1
#!/bin/bash
2
# $Id: zfs-snapshot 49 2013-10-10 08:59:11Z kreverch $
3
BINZFS="/sbin/zfs"
4
BINZPOOL="/sbin/zpool"
5

    
6
function create_snapshot_volume {
7
#*** ETAPE DE CREATION DU SNAPSHOT ***#
8

    
9
echo ""
10
echo "*** Snapshot ZFS from : $NAME_VOL"
11
echo "*** ZFS Type : $TYPE_ZFS"
12
echo ""
13

    
14
echo "*** Snapshot Creation from $NAME_VOL"
15
ZDATE=$(date +%Y%m%d%H%M%S)
16
$BINZFS snapshot $NAME_VOL@snapshot-$ZDATE
17
echo ""
18
#*** FIN ETAPE DE CREATION DU SNAPSHOT ***#
19
}
20

    
21
function create_snapshot_filesystem {
22
#*** ETAPE DE CREATION DU SNAPSHOT ***#
23

    
24
echo ""
25
echo "*** Snapshot ZFS from : $NAME_VOL"
26
echo "*** ZFS Type : $TYPE_ZFS"
27
echo ""
28
echo "*** Snapshot Creation from $NAME_VOL"
29
ZDATE=$(date +%Y%m%d%H%M%S)
30
$BINZFS snapshot $NAME_VOL@snapshot-$ZDATE
31
echo ""
32
#*** FIN ETAPE DE CREATION DU SNAPSHOT ***#
33
}
34

    
35

    
36
function del_old_snapshot {
37
#*** ETAPE SUPPRESSION DES SNAPSHOTS OBSELETES ***#
38
echo ""
39
CPT_SNAP=$($BINZFS list -t snapshot -r $NAME_VOL |cut -d" " -f1 |grep -i $NAME_VOL\@ |wc -l)
40
echo "*** Le nombre de snapshot pour $NAME_VOL est : $CPT_SNAP"
41
$BINZFS list -t snapshot -r $NAME_VOL 
42

    
43
if [ $CPT_SNAP -gt $NB_SNAP ]
44
then
45
   echo "*** Detection du snapshot le plus ancien"
46
   for ID_SNAP_OLDER in $($BINZFS list -t snapshot -r $NAME_VOL |cut -d" " -f1 |grep -i $NAME_VOL\@)
47
   do
48
      echo "*** Le snapshot le plus ancien est : $ID_SNAP_OLDER"
49
      break
50
   done
51
   $BINZFS destroy $ID_SNAP_OLDER
52
   if [ $? -eq 0 ]
53
   then
54
      echo "*** Suppression du snapshot $ID_SNAP_OLDER [OK]"
55
   else
56
      echo "/!\\ Suppression du snapshot $ID_SNAP_OLDER [ERROR]." 1>&2
57
   fi
58

    
59
fi
60
#*** FIN ETAPE SUPPRESSION DES SNAPSHOTS OBSELETES ***#
61
}
62

    
63
echo "**** $1"
64
if [ "$#" -eq 0 ]
65
then
66
   echo "/!\\ File Configuration missing ... /!\\" 1>&2
67
   exit 1
68
fi 
69

    
70
if [ ! -f $1 ]
71
then
72
   echo "/!\\ File Configuration does not exist /!\\" 1>&2
73
   exit 1
74
fi
75

    
76
NAME_VOL=$(cat $1 |grep "name" |cut -d"=" -f2)
77
TYPE_ZFS=$(cat $1 |grep "type" |cut -d"=" -f2)
78
NB_SNAP=$(cat $1 |grep "nbsnapshots"|cut -d"=" -f2)
79
if [ "$NAME_VOL" = "" ] || [ "$TYPE_ZFS" = "" ] || [ "$NB_SNAP" = "" ]
80
then
81
   echo "/!\\ Problem with the Configuration File : incoherence data or incomplete /!\\" 1>&2
82
   exit 1
83
fi
84

    
85
if [ "$TYPE_ZFS" == "volume" ]
86
then
87
   create_snapshot_volume
88
   del_old_snapshot
89

    
90

    
91
else
92
   if [ "$TYPE_ZFS" == "filesystem" ]
93
   then
94
      create_snapshot_filesystem
95
      del_old_snapshot
96

    
97
   fi
98
fi