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 |