root / bin / zfs-snapshot @ 67
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 |