#!/bin/bash
# $Id: sys_bakcfg_clean.bash 475 2024-03-13 10:47:32Z bertrand $
# Ce script permet nettoyer les archives des sauvegardes de 
# configuration.
# Supprime les fichiers les plus anciens dans la même journée 
# (conserve uniquement le plus récent donc)
# Supprime les fichiers qui ont plus de $max_days jours 
# uniquement s'il y a plus de $max_files fichiers présents
archives_folder="/root/backup/archives"
base_name="sysbakcfg"
suffix_name=".tar.gz"
date_pattern="%Y%m%d"
#time_pattern="%H%M%S"
max_days=30
max_files=30
today=$(date "+$date_pattern")
#now=$(date "+$time_pattern")
for file in $archives_folder/*$suffix_name; do
	files=$(ls -1 $archives_folder | wc -l)
	curdate=$(date -r $file "+$date_pattern")
	#curtime=$(date -r $file "+$time_pattern")
	#echo "$today $now $curdate $curtime"
	amt=$(ls -1 $archives_folder/$base_name-$curdate*$suffix_name | wc -l)
	if [[ $amt -gt 1 ]]; then
		echo -n "$file: file is not alone that day ($curdate)"
		rm -f $file
		if [[ ! -f $file ]]; then
			echo " [file deleted]"
		else
			echo " [file not deleted (error)]"
		fi
	else
		let files=$files+0
		let days=($(date +%s -d $today)-$(date +%s -d $curdate))/86400
		test $days -gt $max_days && too_old=1 || too_old=0
		test $files -gt $max_files && too_much=1 || too_much=0
		if [[ $too_old -eq 1 && $too_much -eq 1 ]]; then
			echo -n "$file: ($days days > $max_days max) ($files files > $max_files max)"
			rm -f $file
			if [[ ! -f $file ]]; then
				echo " [file deleted]"
			else
				echo " [file not deleted (error)]"
			fi
		else
			echo -n "$file:"
			if [[ $too_old -eq 0 ]]; then
				echo -n " ($days days <= $max_days max)"
			else
				echo -n " ($days days > $max_days max)"
			fi
			if [[ $too_much -eq 0 ]]; then
				echo -n " ($files files <= $max_files max)"
			else
				echo -n " ($files files > $max_files max)"
			fi
			echo " [file kept]"
		fi
	fi
done
