#!/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"