Statistiques
| Révision :

root / bin / zfs-snapshot @ 64

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

1 1 kreverch
#!/bin/bash
2 39 ltaulell
# $Id$
3 51 ltaulell
# Copyright (C) 2013 Kevin Reverchon, Loïs Taulelle
4 51 ltaulell
# This file/program is part of gZFS free software
5 51 ltaulell
# See COPYING file for details
6 51 ltaulell
#
7 51 ltaulell
8 49 kreverch
BINZFS="/sbin/zfs"
9 49 kreverch
BINZPOOL="/sbin/zpool"
10 1 kreverch
11 1 kreverch
function create_snapshot_volume {
12 1 kreverch
#*** ETAPE DE CREATION DU SNAPSHOT ***#
13 1 kreverch
14 1 kreverch
echo ""
15 45 kreverch
echo "*** Snapshot ZFS from : $NAME_VOL"
16 45 kreverch
echo "*** ZFS Type : $TYPE_ZFS"
17 1 kreverch
echo ""
18 1 kreverch
19 45 kreverch
echo "*** Snapshot Creation from $NAME_VOL"
20 1 kreverch
ZDATE=$(date +%Y%m%d%H%M%S)
21 49 kreverch
$BINZFS snapshot $NAME_VOL@snapshot-$ZDATE
22 1 kreverch
echo ""
23 1 kreverch
#*** FIN ETAPE DE CREATION DU SNAPSHOT ***#
24 1 kreverch
}
25 1 kreverch
26 1 kreverch
function create_snapshot_filesystem {
27 1 kreverch
#*** ETAPE DE CREATION DU SNAPSHOT ***#
28 1 kreverch
29 1 kreverch
echo ""
30 45 kreverch
echo "*** Snapshot ZFS from : $NAME_VOL"
31 45 kreverch
echo "*** ZFS Type : $TYPE_ZFS"
32 1 kreverch
echo ""
33 45 kreverch
echo "*** Snapshot Creation from $NAME_VOL"
34 1 kreverch
ZDATE=$(date +%Y%m%d%H%M%S)
35 49 kreverch
$BINZFS snapshot $NAME_VOL@snapshot-$ZDATE
36 1 kreverch
echo ""
37 1 kreverch
#*** FIN ETAPE DE CREATION DU SNAPSHOT ***#
38 1 kreverch
}
39 1 kreverch
40 1 kreverch
41 1 kreverch
function del_old_snapshot {
42 1 kreverch
#*** ETAPE SUPPRESSION DES SNAPSHOTS OBSELETES ***#
43 1 kreverch
echo ""
44 49 kreverch
CPT_SNAP=$($BINZFS list -t snapshot -r $NAME_VOL |cut -d" " -f1 |grep -i $NAME_VOL\@ |wc -l)
45 55 kreverch
echo "*** The number of snapshot to keep for $NAME_VOL is : $CPT_SNAP"
46 49 kreverch
$BINZFS list -t snapshot -r $NAME_VOL
47 1 kreverch
48 1 kreverch
if [ $CPT_SNAP -gt $NB_SNAP ]
49 1 kreverch
then
50 55 kreverch
   echo "*** Detection of the oldest snapshot "
51 49 kreverch
   for ID_SNAP_OLDER in $($BINZFS list -t snapshot -r $NAME_VOL |cut -d" " -f1 |grep -i $NAME_VOL\@)
52 1 kreverch
   do
53 55 kreverch
      echo "*** The oldest snapshot is : $ID_SNAP_OLDER"
54 1 kreverch
      break
55 1 kreverch
   done
56 49 kreverch
   $BINZFS destroy $ID_SNAP_OLDER
57 1 kreverch
   if [ $? -eq 0 ]
58 1 kreverch
   then
59 55 kreverch
      echo "*** Remove the snapshot $ID_SNAP_OLDER [OK]"
60 1 kreverch
   else
61 55 kreverch
      echo "/!\\ Remove the snapshot $ID_SNAP_OLDER [ERROR]." 1>&2
62 1 kreverch
   fi
63 1 kreverch
64 1 kreverch
fi
65 1 kreverch
#*** FIN ETAPE SUPPRESSION DES SNAPSHOTS OBSELETES ***#
66 1 kreverch
}
67 1 kreverch
68 1 kreverch
echo "**** $1"
69 1 kreverch
if [ "$#" -eq 0 ]
70 1 kreverch
then
71 45 kreverch
   echo "/!\\ File Configuration missing ... /!\\" 1>&2
72 11 kreverch
   exit 1
73 1 kreverch
fi
74 1 kreverch
75 1 kreverch
if [ ! -f $1 ]
76 1 kreverch
then
77 45 kreverch
   echo "/!\\ File Configuration does not exist /!\\" 1>&2
78 11 kreverch
   exit 1
79 1 kreverch
fi
80 1 kreverch
81 1 kreverch
NAME_VOL=$(cat $1 |grep "name" |cut -d"=" -f2)
82 1 kreverch
TYPE_ZFS=$(cat $1 |grep "type" |cut -d"=" -f2)
83 1 kreverch
NB_SNAP=$(cat $1 |grep "nbsnapshots"|cut -d"=" -f2)
84 1 kreverch
if [ "$NAME_VOL" = "" ] || [ "$TYPE_ZFS" = "" ] || [ "$NB_SNAP" = "" ]
85 1 kreverch
then
86 45 kreverch
   echo "/!\\ Problem with the Configuration File : incoherence data or incomplete /!\\" 1>&2
87 11 kreverch
   exit 1
88 1 kreverch
fi
89 1 kreverch
90 1 kreverch
if [ "$TYPE_ZFS" == "volume" ]
91 1 kreverch
then
92 1 kreverch
   create_snapshot_volume
93 1 kreverch
   del_old_snapshot
94 1 kreverch
95 1 kreverch
96 1 kreverch
else
97 1 kreverch
   if [ "$TYPE_ZFS" == "filesystem" ]
98 1 kreverch
   then
99 1 kreverch
      create_snapshot_filesystem
100 1 kreverch
      del_old_snapshot
101 1 kreverch
102 1 kreverch
   fi
103 1 kreverch
fi