in misc

ZFS cleanup of snapshots

Just a small note for this oneliner to cleanup snapshots

First list all snapshots with a given pattern.
(This eaxmple searches 12m)

zfs list -t snapshot | grep -F '12m' | cut -d " " -f 1 | xargs -L 1 echo zfs destroy

Remove the word echo to perform a cleanup

zfs list -t snapshot | grep -F '12m' | cut -d " " -f 1 | xargs -L 1 zfs destroy

Explanation:

zfs list -t snapshot
List all zfs snaphots

grep -F '12m'
Only match the lines containing the string 12m

cut -d " " -f 1
Only fetch the first column of the output. (This is the snapshot name)

xargs -L 1 zfs destroy
Execute the command ‘zfs destroy’ for the found lines
The option -L 1 means it calls ‘zfs destroy’ per item
without it, xargs wills supply multiple items to 1 call. (Which isn’t support by zfs destroy)

Share