Statistiques
| Révision :

root / bin / zfs-clone

Historique | Voir | Annoter | Télécharger (1,49 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 usage {
12 1 kreverch
echo "Syntax :"
13 1 kreverch
echo "$0 -n snapshot name to clone"
14 1 kreverch
echo "$0 -i for a interactive use"
15 1 kreverch
16 1 kreverch
}
17 1 kreverch
18 1 kreverch
19 1 kreverch
function nointeractive {
20 1 kreverch
21 1 kreverch
TODAY=$(date +%Y%m%d%H%M%S)
22 1 kreverch
23 1 kreverch
clone_name=$(echo "$volfs2clone" |sed -e "s/@.*$//g")
24 49 kreverch
$BINZFS clone $volfs2clone $clone_name-$TODAY-clone
25 1 kreverch
if [ "$?" == "0" ]
26 1 kreverch
then
27 1 kreverch
echo "name:$clone_name-$TODAY-clone"
28 1 kreverch
exit 0
29 1 kreverch
fi
30 1 kreverch
}
31 1 kreverch
32 1 kreverch
function interactive {
33 1 kreverch
34 49 kreverch
$BINZFS list -t snapshot
35 1 kreverch
echo "*** Select Volume or Filesystem to Clone : ***"
36 1 kreverch
while read inputline
37 1 kreverch
do
38 1 kreverch
   NAMEVOLFS=$inputline
39 1 kreverch
   echo "*** Are you sur ? : $inputline ? (y/n) ***"
40 1 kreverch
41 1 kreverch
   while read inputConfirm
42 1 kreverch
   do
43 1 kreverch
      if [ "$inputConfirm" = "y" ]||[ "$inputConfirm" = "n" ]
44 1 kreverch
      then
45 1 kreverch
         break
46 1 kreverch
      fi
47 1 kreverch
      echo "*** Are you sur ? : $inputline ? (y/n) ***"
48 1 kreverch
   done
49 1 kreverch
50 1 kreverch
   if [ "$inputConfirm" = "y" ]
51 1 kreverch
   then
52 1 kreverch
     volfs2clone=$inputline
53 1 kreverch
     nointeractive
54 1 kreverch
   fi
55 1 kreverch
   if [ "$inputConfirm" != "y" ]
56 1 kreverch
   then
57 49 kreverch
      $BINZFS list -t snapshot
58 1 kreverch
      echo "*** Select Volume or Filesystem to Clone : ***"
59 1 kreverch
   fi
60 1 kreverch
done
61 1 kreverch
62 1 kreverch
}
63 1 kreverch
64 1 kreverch
while getopts "in:h" OPTION
65 1 kreverch
do
66 1 kreverch
     case $OPTION in
67 1 kreverch
         h)
68 1 kreverch
             usage
69 1 kreverch
             exit 1
70 1 kreverch
             ;;
71 1 kreverch
         n)
72 1 kreverch
            volfs2clone=$OPTARG
73 1 kreverch
            ;;
74 1 kreverch
         i)
75 1 kreverch
            interactive
76 1 kreverch
            exit 0
77 1 kreverch
            ;;
78 1 kreverch
     esac
79 1 kreverch
done
80 1 kreverch
if [[ -z $volfs2clone ]]
81 1 kreverch
then
82 1 kreverch
     usage
83 1 kreverch
     exit 1
84 1 kreverch
fi
85 1 kreverch
nointeractive