30 lines
583 B
Bash
Executable file
30 lines
583 B
Bash
Executable file
#!/bin/sh
|
|
|
|
set -eu
|
|
|
|
umask 027
|
|
|
|
_date="$(date +%Y-%m-%d)"
|
|
_logfile="/srv/log/all.log"
|
|
|
|
_archivedir="$(dirname "$_logfile")/archive/$(date +%Y)"
|
|
|
|
if [ -f "$_logfile" ]; then
|
|
if [ ! -s "$_logfile" ]; then
|
|
echo "ERROR: Not rotating empty logfile '${_logfile}'" 1>&2
|
|
exit 1
|
|
fi
|
|
else
|
|
echo "ERROR: Cannot find logfile '${_logfile}'" 1>&2
|
|
exit 1
|
|
fi
|
|
|
|
_dest="${_archivedir}/$(basename "$_logfile").${_date}"
|
|
[ -d "$_archivedir" ] || mkdir "$_archivedir"
|
|
|
|
mv "$_logfile" "${_dest}"
|
|
touch "$_logfile"
|
|
|
|
kill -HUP "$(cat /var/run/syslog.pid)"
|
|
|
|
nice gzip -f "$_dest"
|