Skip to content

Instantly share code, notes, and snippets.

@alexwitherspoon
Forked from paulhandy/cleanup-zfs-snapshots
Created April 29, 2018 18:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alexwitherspoon/186b0df62523b21ffdff903670dfbf34 to your computer and use it in GitHub Desktop.
Save alexwitherspoon/186b0df62523b21ffdff903670dfbf34 to your computer and use it in GitHub Desktop.
Clean up old zfs snapshots
https://serverfault.com/questions/340837/how-to-delete-all-but-last-n-zfs-snapshots#340846
You may find something like this a little simpler
zfs list -t snapshot -o name | grep ^tank@Auto | tac | tail -n +16 | xargs -n 1 zfs destroy -r
output the list of snapshot (names only) with zfs list -t snaphot -o name
filter to keep only the ones that match tank@Auto with grep ^tank@Auto
reverse the list (previously sorted from oldest to newest) with tac
limit output to the 16th oldest result and following with tail -n +16
then destroy with xargs -n 1 zfs destroy -vr
deleting snapshots in reverse order is supposedly more efficient.
or sort in reverse order of creation
zfs list -t snapshot -o name -S creation | grep ^tank@Auto | tail -n +16 | xargs -n 1 zfs destroy -vr
Test it with ...|xargs -n 1 echo
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment