Add script 'archive_logfiles.sh'.
This commit is contained in:
parent
f02fcc26ab
commit
d4d23c5580
80
archive_logfiles.sh
Executable file
80
archive_logfiles.sh
Executable file
@ -0,0 +1,80 @@
|
||||
#!/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
|
Loading…
Reference in New Issue
Block a user