feat(script): Implement retention for old snapshots (#1)

This commit is contained in:
hygienic-books 2023-03-06 02:40:16 +01:00
parent f5956063a9
commit 05a9f22b01

View File

@ -212,6 +212,22 @@ function get_snaps_in_cur_sev () {
printf -- '%s' "${snaps_in_cur_sev}" printf -- '%s' "${snaps_in_cur_sev}"
} }
function do_retention () {
local snap_list snaps_done_by_us snaps_in_cur_sev snaps_limit oldest_snap
for successfully_snapped_dataset in "${successfully_snapped_datasets[@]}"; do
snaps_in_cur_sev="$(get_snaps_in_cur_sev "${successfully_snapped_dataset}")"
if [[ "${severity}" == "${snaps_important_suffix}" ]]; then
snaps_limit="${snaps_important_keep}"
else
snaps_limit="${snaps_trivial_keep}"
fi
while [[ "$(get_snaps_in_cur_sev "${successfully_snapped_dataset}" | wc -l)" -gt "${snaps_limit}" ]]; do
oldest_snap="$(get_snaps_in_cur_sev "${successfully_snapped_dataset}" | head -n1)"
zfs destroy "${oldest_snap}"
done
done
}
function main () { function main () {
local pkgs_in_transaction local pkgs_in_transaction
pkgs_in_transaction=("${@}") pkgs_in_transaction=("${@}")
@ -245,7 +261,9 @@ function main () {
local trimmed_pkg_list_oneline local trimmed_pkg_list_oneline
trim_pkg_list_oneline trim_pkg_list_oneline
local -a successfully_snapped_datasets
do_snaps do_snaps
do_retention
} }
main "${pkgs[@]}" main "${pkgs[@]}"