84 lines
1.7 KiB
Bash
Executable File
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} ${*}
|
|
|