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