Просмотр исходного кода

add shell script to remove zfs auto-snapshots by volume

Take from http://pastebin.com/3pLJZa2E
Weiyi Lou 12 лет назад
Родитель
Сommit
68b95a54d9
2 измененных файлов с 39 добавлено и 0 удалено
  1. 6 0
      setup.sh
  2. 33 0
      zfs/destroy-zfs-auto-snaps

+ 6 - 0
setup.sh

@@ -229,6 +229,12 @@ ln -s dotfiles/emacs/emacs ~/.emacs
 success "Emacs config linked"
 # }}}
 
+# ZFS {{{
+[ -f ~/bin/destroy-zfs-auto-snaps ] && mv ~/.vimrc "$BACKUP_DIR"
+ln -s ../dotfiles/zfs/destroy-zfs-auto-snaps ~/bin
+success "ZFS utilities installed"
+# }}}
+
 # Vim {{{
 [ -d ~/.vim ] && mv ~/.vim "$BACKUP_DIR"
 [ -f ~/.vimrc ] && mv ~/.vimrc "$BACKUP_DIR"

+ 33 - 0
zfs/destroy-zfs-auto-snaps

@@ -0,0 +1,33 @@
+#!/usr/bin/env bash
+
+# From http://pastebin.com/3pLJZa2E
+
+if [ -n "${1}" ]
+then
+  echo "This will *RECURSIVELY* destroy all ZFS auto snapshots (not your manually created snaps). "
+  echo "Parent and child filesystem snapshots to be destroyed: ${1}"
+  echo "Continue? (y/n)"
+  read ANS
+
+  if [ $ANS == "y" ]
+  then
+    echo "Listing snapshots to be destroyed..."
+    for ii in $(zfs list -r -t snapshot -o name ${1} | grep @zfs-auto-snap); do echo $ii; done
+    echo "The above snapshots will be destroyed, sound like a plan? (y/n)"
+    read PLAN
+    if [ $PLAN == "y" ]
+    then
+      for ii in $(zfs list -r -t snapshot -o name ${1} | grep @zfs-auto-snap); do echo $ii; zfs destroy $ii; done
+      echo "ZFS Auto snaps for ${1} destroyed!"
+    else
+      echo "Not a plan then... exiting."
+    fi
+
+  else
+    echo "Not destroying... exit."
+  fi
+
+  echo "Done."
+else
+  echo "Exiting. You did not provide a ZFS filesystem.  (destroy-zfs-auto-snaps-for-fs.sh zpool/some/fs)"
+fi