utils/archive_logs.sh
Cryptoval Trading Technologies bea5ae340a inital
2025-05-17 02:19:12 +00:00

84 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
function usage {
echo -n "Usage: ${0}"
echo -n " -L <log directory>"
echo -n " [ -A <archive_logs_dir> (default /works/archive/logs)]"
echo -n " [-D <older than time criteria> (default: '2 days ago')]"
echo
exit 1
}
echo Starting $0 $*
LogDir=${1}
LogArchiveDir=/works/archive/logs
DateCriteria="2 days ago"
# ---------------- cmdline
while getopts "A:L:D:" opt; do
case ${opt} in
A )
LogArchiveDir=$OPTARG
;;
L )
LogDir=$OPTARG
;;
D )
DateCriteria=$OPTARG
;;
\? )
echo "Invalid option: -$OPTARG" >&2
usage
;;
: )
echo "Option -$OPTARG requires an argument." >&2
usage
;;
esac
done
# ---------------- cmdline
if [ "${LogDir}" == "" ]
then
usage
fi
Cmd="mkdir -p ${LogArchiveDir}"
echo ${Cmd} && eval ${Cmd}
echo "Looking for log files older than '${DateCriteria}' in ${LogDir}"
Oldest=$(date -d "${DateCriteria}" '+%Y-%m-%d %H:%M:%S')
Cmd="find ${LogDir}/ '(' -name '*.log' -o -name '*.log.*' ')' -type f -not -newermt \"${Oldest}\""
echo $Cmd
files=$(eval ${Cmd})
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} ${*}