File tree Expand file tree Collapse file tree 1 file changed +30
-0
lines changed Expand file tree Collapse file tree 1 file changed +30
-0
lines changed Original file line number Diff line number Diff line change
1
+ #! /bin/bash
2
+ # 2019 © Postgres.ai
3
+
4
+ # Use this script with caution! Note that this script is going to destroy all ZFS snapshots
5
+ # on the machine, except:
6
+ # - the last $1 snapshots (the first parameter in the CLI call),
7
+ # - those snapthots that are used now,
8
+ # - snapshots having "clone" or "NAME" in the name (however, they are supposed to be
9
+ # dependant; so with old 'main' snapshots, dependant ones will be deleted as well,
10
+ # thanks to '-R' option when calling 'zfs destroy').
11
+ #
12
+ # Example of use:
13
+ # bash ./scripts/delete_old_zfs_snapshots.sh 5
14
+
15
+ set -euxo pipefail
16
+
17
+ n=$1
18
+
19
+ if [[ -z " $n " ]]; then
20
+ echo " Specify the number of snapshots to keep (Example: 'bash ./scripts/delete_old_zfs_snapshots.sh 5' to delete all but last 5 snapshots)."
21
+ else
22
+ sudo zfs list -t snapshot -o name \
23
+ | grep -v clone \
24
+ | grep -v NAME \
25
+ | head -n -$n \
26
+ | xargs -n1 --no-run-if-empty sudo zfs destroy -R
27
+ fi
28
+
29
+ # # An example of crontab entry, setting up auto-deletion of all unused ZFS snapshots except the last 3 ones.
30
+ # # 0 6 * * * sudo zfs list -t snapshot -o name | grep -v clone | grep -v NAME | head -n -3 | xargs -n1 --no-run-if-empty sudo zfs destroy -R 2>&1 | logger --stderr --tag "cleanup_zfs_snapshot"
You can’t perform that action at this time.
0 commit comments