From 86c4e99795f11c5f4fa95deb6d0617b84a4ae71a Mon Sep 17 00:00:00 2001 From: Darren 'Tadgy' Austin Date: Wed, 29 Oct 2025 17:05:09 +0000 Subject: [PATCH] Update log rotation cronjob. --- opt/sbin/cronjob-rotate-logs-symlinks | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/opt/sbin/cronjob-rotate-logs-symlinks b/opt/sbin/cronjob-rotate-logs-symlinks index aae8e1a..49997ea 100755 --- a/opt/sbin/cronjob-rotate-logs-symlinks +++ b/opt/sbin/cronjob-rotate-logs-symlinks @@ -5,6 +5,9 @@ LOGS_DIR="/var/log" DIR_MODE="0750" UMASK="027" +# This array may be used in the defaults file. +declare -A CREATE_DIRS + # Allow /etc/default/rotate-logs-symlinks to override default configuration. [[ -e /etc/default/rotate-logs-symlinks ]] && { # shellcheck disable=SC1091 @@ -21,7 +24,7 @@ UMASK="027" umask "$UMASK" # Process all the directories in the logs directory. - for DIR in "$LOGS_DIR"/*; do + for DIR in "$LOGS_DIR"/*/; do cd "$DIR" 2>/dev/null || { printf "%s: %s\\n" "${0##*/}" "failed to change directory to '$DIR'" >&2 continue @@ -34,9 +37,17 @@ UMASK="027" continue } + # If configured to do so for this directory, create sub directories. + for CREATE_DIR in ${CREATE_DIRS[$(printf "$DIR" | awk -F / -e '{print $4}')]}; do + mkdir -p -m "$DIR_MODE" "$TODAY/$CREATE_DIR" 2>/dev/null || { + printf "%s: %s\\n" "${0##*/}" "failed to create directory '$DIR/$TODAY/$CREATE_DIR'" >&2 + continue + } + done + # Create a 'today' symlink to the new days' directory. - ( cd "$DIR" 2>/dev/null && ln -sf "$TODAY" "today" 2>/dev/null ) || { - printf "%s: %s\\n" "${0##*/}" "creating 'today' symlink failed" >&2 + ( cd "$DIR" 2>/dev/null && ln -sfn "$TODAY" "today" 2>/dev/null ) || { + printf "%s: %s\\n" "${0##*/}" "updating 'today' symlink failed" >&2 continue } done