81 lines
1.8 KiB
Bash
Executable File
81 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
|
|
usage() {
|
|
|
|
echo
|
|
[ -n "$1" ] && echo -e "Error: $1\n"
|
|
|
|
cat<<EOF
|
|
Usage: $(basename $0) -d <log-file-folder>
|
|
|
|
EOF
|
|
exit 1
|
|
}
|
|
|
|
|
|
while getopts d:h opt ; do
|
|
case $opt in
|
|
d) LOGS_FOLDER=$OPTARG
|
|
if [[ -z "$LOGS_FOLDER" ]] ; then
|
|
usage "The \"-d\" flag must take one argument (logfile folder)"
|
|
elif [[ ! -d "$LOGS_FOLDER" ]] ; then
|
|
usage "Directory \"$LOGS_FOLDER\" does not exist"
|
|
fi
|
|
;;
|
|
h) usage ;;
|
|
esac
|
|
done
|
|
|
|
shift `expr $OPTIND - 1`
|
|
[[ $# -eq "0" ]] || usage "Wrong number of arguments"
|
|
|
|
if [[ -z "$LOGS_FOLDER" ]] ; then
|
|
usage "No logfile folder was given!"
|
|
fi
|
|
|
|
|
|
#Define the Archived log files location
|
|
ARCHIVE_FOLDER=${LOGS_FOLDER}/archive
|
|
|
|
mkdir -p $ARCHIVE_FOLDER
|
|
|
|
for log in $LOGS_FOLDER/* ; do
|
|
|
|
[[ ! -f "$log" ]] && continue
|
|
|
|
filename="$(basename $log)"
|
|
extension="${filename##*.}"
|
|
|
|
# - Only rotated files..
|
|
# -
|
|
[[ "$extension" = "log" ]] && continue
|
|
|
|
timestamp=$(stat --format '%Y' $log)
|
|
date=$(date '+%Y%m%d%H%M' --date="@${timestamp}")
|
|
year=${date:0:4}
|
|
month=${date:4:2}
|
|
day=${date:6:2}
|
|
|
|
mkdir -p $ARCHIVE_FOLDER/$year
|
|
mkdir -p $ARCHIVE_FOLDER/$year/$month
|
|
#mkdir -p $ARCHIVE_FOLDER/$year/$month/$day
|
|
|
|
filename="${filename%.*}"
|
|
|
|
if [[ "$extension" = "gz" ]]; then
|
|
filename="${filename%.*}"
|
|
[[ -f "${ARCHIVE_FOLDER}/${year}/${month}/${filename}.${year}-${month}-${day}.gz" ]] && continue
|
|
|
|
cp $log ${ARCHIVE_FOLDER}/${year}/${month}/${filename}.${year}-${month}-${day}.gz
|
|
else
|
|
[[ -f "${ARCHIVE_FOLDER}/${year}/${month}/${filename}.${year}-${month}-${day}.gz" ]] && continue
|
|
gzip -c $log > ${ARCHIVE_FOLDER}/${year}/${month}/${filename}.${year}-${month}-${day}.gz
|
|
fi
|
|
|
|
touch -t "${date}" ${ARCHIVE_FOLDER}/${year}/${month}/${filename}.${year}-${month}-${day}.gz
|
|
|
|
done
|
|
|
|
exit 0
|