Added new destroy on full option
[zfs-nexenta/.git] / zfs-autosnap
index 2493e0b32415f78290320f96d7c1de630b53b9c0..da9090635011700f3b876e2c06e03befe417540b 100755 (executable)
@@ -50,7 +50,7 @@ filesystem=$1
 mountpoint=${2-/$1}
 numsnapshots=${3-12}
 maxagedays=${4-0}
-lockdir="/tmp/${filesystem}.lock"
+lockdir="/tmp/zfs-admin-lock"
 pool=`echo "$filesystem" | awk -F '/' '{ print $1 }'`
 
 if [ -z "$filesystem" ] || [ -z "$mountpoint" ] || [ -z "$numsnapshots" ] || [ -z "$maxagedays" ]; then
@@ -111,8 +111,8 @@ snapshot "${filesystem}@${datetime}"
 
 minutes=$(echo $datetime | datetime_to_minutes)
 
-lockdir="/tmp/zfs-admin-lock"
 if ! mkdir "$lockdir" >/dev/null 2>&1; then
+  echo "-W- The zfs filesystem has been locked down. Skipping snapshot cleanup."
   exit 0
 fi
 cleanup() { rm -rf "$lockdir"; }
@@ -130,8 +130,8 @@ for snapshot in $snapshots; do
       case $((snapminutes2 % window)) in
         0) ;;
         *)
-          snapname=$(echo "$snapshot" |
-                       sed 's,/\(.*\)/.zfs/snapshot/\(.*\),\1@\2,')
+          snapname=${filesystem}$(echo "$snapshot" |
+                                  sed 's,/\(.*\)/.zfs/snapshot/\(.*\),@\2,')
           destroy "$snapname"
         ;;
       esac
@@ -140,8 +140,8 @@ for snapshot in $snapshots; do
     window=$((window*2))
   done
   if [ $maxagedays -gt 0 ] && [ $age -gt $((maxagedays * 24 * 60)) ]; then
-    snapname=$(echo "$snapshot" |
-                     sed 's,/\(.*\)/.zfs/snapshot/\(.*\),\1@\2,')
+    snapname=${filesystem}$(echo "$snapshot" |
+                            sed 's,/\(.*\)/.zfs/snapshot/\(.*\),@\2,')
     destroy "$snapname"
   fi
 done