diff --git a/prune_data.sh b/prune_data.sh new file mode 100755 index 0000000..ea0bb3c --- /dev/null +++ b/prune_data.sh @@ -0,0 +1,70 @@ + +#!/bin/bash + +function usage { + echo -n "Usage: ${0}" + echo -n " -d " + echo -n " -D (example: '2 days ago')" + echo + exit 1 +} + +echo Starting $0 $* + + +# ---------------- cmdline +while getopts "d:D:" opt; do + case ${opt} in + d ) + RootDir=$OPTARG + ;; + D ) + DateCriteria=$OPTARG + ;; + \? ) + echo "Invalid option: -$OPTARG" >&2 + usage + ;; + : ) + echo "Option -$OPTARG requires an argument." >&2 + usage + ;; + esac +done + +if [ "${RootDir}" == "" ] || [ "${DateCriteria}" == "" ] ; then + usage +fi + +declare -A Settings=() +Settings[Src]=${RootDir} +Settings[PruneDate]=$(date -d "${DateCriteria}" '+%Y-%m-%d') + +src=${Settings[Src]} +prune_date=${Settings[PruneDate]} + +echo Before Pruning.... +df -hT ${src} + +echo "Finding files older than ${prune_date}..." +Cmd="find ${src} -type f ! -newermt \"${prune_date}\"" +echo ${Cmd} +files=($(eval ${Cmd})) +echo "Total files to be pruned: ${#files[*]}" + +for file in "${files[@]}" ; do + Cmd="rm -f ${file}" + echo ${Cmd} + eval ${Cmd} +done + +echo "Removing empty directories..." +Cmd="find ${src} -type d -empty -print -delete" +echo ${Cmd} +eval ${Cmd} + +echo After Pruning.... +df -hT ${src} + +echo $0 Done +