#!/bin/bash ### Usage message if [[ -z $1 ]]; then cat <<- EOT Usage: $0 [RETENTION] PATH_TO_DIR_WITH_BACKUPS - self explainatory, eg. /opt/backups RETENTION - number of last backups to leave (based on modification time) EOT exit 1 fi # will leave last N files untouched RETENTION=${2:-5} BASEDIR=$(dirname $0) BACKUP_DIR=$1 FILES_LIST=( $(ls -1trh ${BACKUP_DIR}/*.sql.bz2) ) ARR_SIZE=${#FILES_LIST[@]} if [[ ${ARR_SIZE} -gt ${RETENTION} ]]; then LEAVE_END_IDX=$((ARR_SIZE - RETENTION)) LEAVE=${FILES_LIST[@]:0:${LEAVE_END_IDX}} rm ${LEAVE[@]} fi