From 102de984798138f7cdd1dce10739774806d89695 Mon Sep 17 00:00:00 2001 From: Felix Stupp Date: Sun, 1 Dec 2019 18:38:24 +0100 Subject: [PATCH] common: Configured auto remove of backups --- group_vars/all/vars.yml | 1 + roles/common/tasks/helpers.yml | 9 +++++++++ roles/common/templates/backup_autoremove.sh | 21 +++++++++++++++++++++ 3 files changed, 31 insertions(+) create mode 100644 roles/common/templates/backup_autoremove.sh diff --git a/group_vars/all/vars.yml b/group_vars/all/vars.yml index a0cd337..de58ce3 100644 --- a/group_vars/all/vars.yml +++ b/group_vars/all/vars.yml @@ -12,6 +12,7 @@ zocker_authorized_keys_url: "https://git.banananet.work/zocker.keys" update_scripts_directory: "/root/update" backup_gpg_fingerprint: "73D09948B2392D688A45DC8393E1BD26F6B02FB7" +backups_to_keep: 1 backups_directory: "/backups" backups_files_directory: "{{ backups_directory }}/files" backups_mysql_database_directory: "{{ backups_directory }}/mysql_databases" diff --git a/roles/common/tasks/helpers.yml b/roles/common/tasks/helpers.yml index 64b102f..b0c4425 100644 --- a/roles/common/tasks/helpers.yml +++ b/roles/common/tasks/helpers.yml @@ -27,5 +27,14 @@ group: root mode: "u=rwx,g=rx,o=rx" loop: + - backup_autoremove.sh - backup_files.sh - backup_mysql_database.sh + +- name: Configure auto remove older backups + cron: + hour: 1 + minute: 55 + job: "{{ global_helper_directory }}/backup_autoremove.sh" + name: "Auto remove older backups" + state: present diff --git a/roles/common/templates/backup_autoremove.sh b/roles/common/templates/backup_autoremove.sh new file mode 100644 index 0000000..a84742d --- /dev/null +++ b/roles/common/templates/backup_autoremove.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +set -euxo pipefail; + +backupsToKeep={{ backups_to_keep }}; + +function onlyDatedFiles() { + grep --perl-regexp '/\d+(-\d+)*(\.[^/]+)*$'; +} + +function getDirName() { + grep --only-matching --perl-regexp '^.+(?=/[^/]+)'; +} + +find {{ backups_directory | quote }} -type f | + onlyDatedFiles | + getDirName | + sort --unique | + while read dir; do + find "$dir" --type f | onlyDatedFiles | sort --reverse | tail --lines=+$((backupsToKeep + 1)) | xargs rm; +done