Clean backups older than retention time
Command can use default retention time or the one passed as argument.
This commit is contained in:
parent
de9548d9e9
commit
1ebd39d86a
|
@ -1,7 +1,10 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
# This script will backup /etc/pve content :
|
# This script will backup /etc/pve content :
|
||||||
# 1. Make a tar to /etc/proxmox.pve/backup/
|
# 1. Make an archive to a first directory (default: /etc/proxmox.pve/backup/).
|
||||||
|
# 2. Hard link a fix archive name (pve.latest.tar.gz) to new archive
|
||||||
|
# Easy to monitor (this path can be expected).
|
||||||
|
# 3. Clean backups older than retention time (default: 7).
|
||||||
|
|
||||||
# This script can be call by a cronjob (eg. daily).
|
# This script can be call by a cronjob (eg. daily).
|
||||||
|
|
||||||
|
@ -14,6 +17,7 @@ readonly NBARGS="${#}"
|
||||||
|
|
||||||
readonly DEFAULT_LOCAL_BKP_DIR="/etc/proxmox.pve/backup"
|
readonly DEFAULT_LOCAL_BKP_DIR="/etc/proxmox.pve/backup"
|
||||||
readonly TODAY_VAR=$(date +%Y%m%d)
|
readonly TODAY_VAR=$(date +%Y%m%d)
|
||||||
|
readonly DEFAULT_RETENTION_TIME="7"
|
||||||
|
|
||||||
## Colors
|
## Colors
|
||||||
readonly PURPLE='\033[1;35m'
|
readonly PURPLE='\033[1;35m'
|
||||||
|
@ -25,7 +29,7 @@ readonly COLOR_DEBUG="${PURPLE}"
|
||||||
usage() { # {{{
|
usage() { # {{{
|
||||||
|
|
||||||
cat <<- EOF
|
cat <<- EOF
|
||||||
usage: $PROGNAME [-d|-h|-l]
|
usage: $PROGNAME [-d|-h|-l|-r]
|
||||||
|
|
||||||
Backup /etc/pve content
|
Backup /etc/pve content
|
||||||
|
|
||||||
|
@ -33,6 +37,12 @@ EXAMPLES :
|
||||||
- Backup /etc/pve content to ${DEFAULT_LOCAL_BKP_DIR} directory
|
- Backup /etc/pve content to ${DEFAULT_LOCAL_BKP_DIR} directory
|
||||||
${PROGNAME}
|
${PROGNAME}
|
||||||
|
|
||||||
|
- Backup /etc/pve content to /var/backups/pve directory
|
||||||
|
${PROGNAME} --local /var/backups/pve
|
||||||
|
|
||||||
|
- Backup to default path and keep backups for 14 days
|
||||||
|
${PROGNAME} --retention 14
|
||||||
|
|
||||||
OPTIONS :
|
OPTIONS :
|
||||||
-d,--debug
|
-d,--debug
|
||||||
Enable debug messages.
|
Enable debug messages.
|
||||||
|
@ -44,6 +54,10 @@ OPTIONS :
|
||||||
Path to a local directory to store backup and override
|
Path to a local directory to store backup and override
|
||||||
default path (${DEFAULT_LOCAL_BKP_DIR}).
|
default path (${DEFAULT_LOCAL_BKP_DIR}).
|
||||||
|
|
||||||
|
-r,--retention,--retention-time
|
||||||
|
Backups older than retention time (default: ${DEFAULT_RETENTION_TIME})
|
||||||
|
will be delete.
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -66,6 +80,12 @@ define_vars() { # {{{
|
||||||
local_bkp_dir="${DEFAULT_LOCAL_BKP_DIR}"
|
local_bkp_dir="${DEFAULT_LOCAL_BKP_DIR}"
|
||||||
fi
|
fi
|
||||||
## }}}
|
## }}}
|
||||||
|
## If retention_time wasn't defined {{{
|
||||||
|
if [ -z "${retention_time}" ]; then
|
||||||
|
## Use default retention time to clean backups
|
||||||
|
retention_time="${DEFAULT_RETENTION_TIME}"
|
||||||
|
fi
|
||||||
|
## }}}
|
||||||
|
|
||||||
}
|
}
|
||||||
# }}}
|
# }}}
|
||||||
|
@ -125,6 +145,11 @@ main() { # {{{
|
||||||
chown -R backup:adm -- "${local_bkp_dir}" \
|
chown -R backup:adm -- "${local_bkp_dir}" \
|
||||||
&& chmod 'u+rwX,g+rX,o-rwx' -R -- "${local_bkp_dir}"
|
&& chmod 'u+rwX,g+rX,o-rwx' -R -- "${local_bkp_dir}"
|
||||||
## }}}
|
## }}}
|
||||||
|
## Clean files older than $retention_time {{{
|
||||||
|
### OR exit with error code 4 if it fails
|
||||||
|
find "${local_bkp_dir}" -maxdepth 1 -type f -mtime +"${retention_time}" -iname "pve.*.tar.gz" -delete \
|
||||||
|
|| exit 4
|
||||||
|
## }}}
|
||||||
|
|
||||||
}
|
}
|
||||||
# }}}
|
# }}}
|
||||||
|
@ -165,6 +190,12 @@ if [ ! "${NBARGS}" -eq "0" ]; then
|
||||||
## Define local_bkp_dir
|
## Define local_bkp_dir
|
||||||
local_bkp_dir="${1}"
|
local_bkp_dir="${1}"
|
||||||
;;
|
;;
|
||||||
|
-r|--retention,--retention-time ) ## clean backups older than retention time
|
||||||
|
## Move to the next argument
|
||||||
|
shift
|
||||||
|
## Define retention_time
|
||||||
|
retention_time="${1}"
|
||||||
|
;;
|
||||||
* ) ## unknow option
|
* ) ## unknow option
|
||||||
printf '%b\n' "${RED}Invalid option: ${1}${RESET}"
|
printf '%b\n' "${RED}Invalid option: ${1}${RESET}"
|
||||||
printf '%b\n' "---"
|
printf '%b\n' "---"
|
||||||
|
|
Loading…
Reference in New Issue