ops/utils/archive_logs.sh
2024-01-13 15:03:55 -05:00

57 lines
1.2 KiB
Bash
Executable File

#!/bin/bash
function usage {
echo "Usage: ${0} <log directory> [days (default 2)]"
exit 1
}
echo Starting $0 $*
LogDir=${1}
if [ "${LogDir}" == "" ]
then
usage
fi
Days=${2}
if [ "${Days}" == "" ]
then
Days=2
fi
DateCriteria="${Days} days ago"
Oldest=$(date -d "${DateCriteria}" '+%Y-%m-%d')
echo "Looking for log files older than ${DateCriteria} in ${LogDir}"
LogArchiveDir=/home/cvtt/prod/archive/logs
mkdir -p ${LogArchiveDir}
echo "find ${LogDir}/ '(' -name '*.log' -o -name '*.log.*' ')' -type f -not -newermt ${Oldest})"
files=$(find ${LogDir}/ '(' -name '*.log' -o -name '*.log.*' ')' -type f -not -newermt ${Oldest})
if [ "$files" == "" ]
then
echo "No files found older than ${Oldest} in ${LogDir}"
else
echo Archiving files:
echo -----------------
echo ${files}
oldest_file=$(ls -t ${files} | tail -1)
youngest_file=$(ls -tr ${files} | tail -1)
tstmp1=$(stat --printf '%y' ${oldest_file})
tstmp2=$(stat --printf '%y' ${youngest_file})
tmsig="$(date -d "${tstmp1}" +"%Y%m%d_%H%M%S")-$(date -d "${tstmp2}" +"%Y%m%d_%H%M%S")"
echo $tmsig
Cmd="tar zcvf ${LogArchiveDir}/${tmsig}.logs.tgz ${files}"
echo $Cmd
eval $Cmd
rm $files
fi
echo Done ${0} ${*}