#!/bin/bash # Author: Alan Pippin # Description: This script will remove all snaps containing a given snapshot pattern # across all filesystems on a given pool. # Usage: zfs-rm-all-snaps # source our configuration config="${0%/*}/zfs-scripts.conf" [ -e "${config}.dist" ] && . ${config}.dist [ -e "${config}" ] && . ${config} # command line arg parsing zfs_pool=$1 snap_pattern=$2 if [[ -z "$zfs_pool" ]] || [[ -z "$snap_pattern" ]]; then echo "Usage: $0 " exit 1 fi echo "-> Deleting all snapshots on pool '$zfs_pool' with pattern '$snap_pattern'" for snap in `zfs list -t snapshot 2>/dev/null | grep "^$zfs_pool" | grep "$snap_pattern" | awk '{print $1}'`; do echo " removing snapshot: $snap" done echo -e "\n"; read for snap in `zfs list -t snapshot 2>/dev/null | grep "^$zfs_pool" | grep "$snap_pattern" | awk '{print $1}'`; do echo " destroying snapshot: $snap" zfs destroy "$snap" 2>/dev/null done echo "-> Snapshots removed"