From 561c17292e25fc5ef816258c30837ec7b9fb85da Mon Sep 17 00:00:00 2001 From: Darren 'Tadgy' Austin Date: Thu, 18 Sep 2025 19:40:02 +0000 Subject: [PATCH] Add cronjob to rotate a symlink in logs directories. --- .gitattributesdb | 10 +++-- etc/periodic/daily/0-rotate-logs-symlinks | 1 + .../{cronjob-dehydrated => 10-dehydrated} | 0 ...e-packages-list => 5-update-packages-list} | 0 ...njob-warn-git-status => 7-warn-git-status} | 0 opt/sbin/cronjob-rotate-logs-symlinks | 45 +++++++++++++++++++ 6 files changed, 52 insertions(+), 4 deletions(-) create mode 120000 etc/periodic/daily/0-rotate-logs-symlinks rename etc/periodic/daily/{cronjob-dehydrated => 10-dehydrated} (100%) rename etc/periodic/daily/{cronjob-update-packages-list => 5-update-packages-list} (100%) rename etc/periodic/daily/{cronjob-warn-git-status => 7-warn-git-status} (100%) create mode 100755 opt/sbin/cronjob-rotate-logs-symlinks diff --git a/.gitattributesdb b/.gitattributesdb index 9f26747..e93aff3 100644 --- a/.gitattributesdb +++ b/.gitattributesdb @@ -41,9 +41,10 @@ ZXRjL21zbXRwcmMuZ3Bn 1758049424 1758049424 root:root 0644 - - ZXRjL25ldHdvcmsvLmdpdGlnbm9yZQ== 1757596572 1757596572 root:root 0644 - - ZXRjL25ldHdvcmsvaW50ZXJmYWNlcw== 1757759982 1757596330 root:root 0644 - - ZXRjL3Bhc3N3ZA== 1757873724 1757869538 root:root 0644 - - -ZXRjL3BlcmlvZGljL2RhaWx5L2Nyb25qb2ItZGVoeWRyYXRlZA== 1757708520 1757708520 root:root 0777 - - -ZXRjL3BlcmlvZGljL2RhaWx5L2Nyb25qb2ItdXBkYXRlLXBhY2thZ2VzLWxpc3Q= 1757708520 1757708520 root:root 0777 - - -ZXRjL3BlcmlvZGljL2RhaWx5L2Nyb25qb2Itd2Fybi1naXQtc3RhdHVz 1757708520 1757708520 root:root 0777 - - +ZXRjL3BlcmlvZGljL2RhaWx5LzAtcm90YXRlLWxvZ3Mtc3ltbGlua3M= 1758222266 1758222266 root:root 0777 - - +ZXRjL3BlcmlvZGljL2RhaWx5LzEwLWRlaHlkcmF0ZWQ= 1757708520 1757708520 root:root 0777 - - +ZXRjL3BlcmlvZGljL2RhaWx5LzUtdXBkYXRlLXBhY2thZ2VzLWxpc3Q= 1757708520 1757708520 root:root 0777 - - +ZXRjL3BlcmlvZGljL2RhaWx5Lzctd2Fybi1naXQtc3RhdHVz 1757708520 1757708520 root:root 0777 - - ZXRjL3BrZ2xpc3Q= 1758211839 1757609913 root:root 0644 - - ZXRjL3Jlc29sdi5jb25m 1757611605 1757611605 root:root 0644 - - ZXRjL3J1bmxldmVscy9ib290Ly5naXRpZ25vcmU= 1757769666 1757598667 root:root 0644 - - @@ -81,8 +82,9 @@ aG9tZS9zeXNhZG1pbi8ubmFub3Jj 1757585756 1757585756 sysadmin:users 0644 - - aG9tZS9zeXNhZG1pbi8uc3NoLy5naXRpZ25vcmU= 1757593349 1757593349 sysadmin:users 0644 - - aG9tZS9zeXNhZG1pbi8uc3NoL2F1dGhvcml6ZWRfa2V5cw== 1757763178 1757587611 sysadmin:users 0644 - - b3B0L3NiaW4vY3JvbmpvYi1kZWh5ZHJhdGVk 1758033093 1757531685 root:root 0755 - - +b3B0L3NiaW4vY3JvbmpvYi1yb3RhdGUtbG9ncy1zeW1saW5rcw== 1758224324 1758224324 root:root 0755 - - b3B0L3NiaW4vY3JvbmpvYi11cGRhdGUtcGFja2FnZXMtbGlzdA== 1757531121 1757531121 root:root 0755 - - -b3B0L3NiaW4vY3JvbmpvYi13YXJuLWdpdC1zdGF0dXM= 1757591137 1757591137 root:root 0755 - - +b3B0L3NiaW4vY3JvbmpvYi13YXJuLWdpdC1zdGF0dXM= 1758221607 1757591137 root:root 0755 - - b3B0L3NiaW4vZGVoeWRyYXRlZA== 1757531557 1757531557 root:root 0755 - - b3B0L3NiaW4vdGVycmFmb3JtLWh0dHAtYmFja2VuZA== 1757590543 1757590543 root:root 0755 - - cm9vdC8uYmFzaF9sb2dvdXQ= 1757582867 1757582867 root:root 0644 - - diff --git a/etc/periodic/daily/0-rotate-logs-symlinks b/etc/periodic/daily/0-rotate-logs-symlinks new file mode 120000 index 0000000..e26953b --- /dev/null +++ b/etc/periodic/daily/0-rotate-logs-symlinks @@ -0,0 +1 @@ +/opt/sbin/cronjob-rotate-logs-symlinks \ No newline at end of file diff --git a/etc/periodic/daily/cronjob-dehydrated b/etc/periodic/daily/10-dehydrated similarity index 100% rename from etc/periodic/daily/cronjob-dehydrated rename to etc/periodic/daily/10-dehydrated diff --git a/etc/periodic/daily/cronjob-update-packages-list b/etc/periodic/daily/5-update-packages-list similarity index 100% rename from etc/periodic/daily/cronjob-update-packages-list rename to etc/periodic/daily/5-update-packages-list diff --git a/etc/periodic/daily/cronjob-warn-git-status b/etc/periodic/daily/7-warn-git-status similarity index 100% rename from etc/periodic/daily/cronjob-warn-git-status rename to etc/periodic/daily/7-warn-git-status diff --git a/opt/sbin/cronjob-rotate-logs-symlinks b/opt/sbin/cronjob-rotate-logs-symlinks new file mode 100755 index 0000000..aae8e1a --- /dev/null +++ b/opt/sbin/cronjob-rotate-logs-symlinks @@ -0,0 +1,45 @@ +#!/bin/bash + +# Default configuration. +LOGS_DIR="/var/log" +DIR_MODE="0750" +UMASK="027" + +# Allow /etc/default/rotate-logs-symlinks to override default configuration. +[[ -e /etc/default/rotate-logs-symlinks ]] && { + # shellcheck disable=SC1091 + source /etc/default/rotate-logs-symlinks || { + printf "%s: %s\\n" "${0##*/}" "failed reading /etc/default/rotate-logs-symlinks" >&2 + exit 1 + } +} + +# Process the directories in the logs directory. +[[ -d "$LOGS_DIR" ]] && { + TODAY="$(printf "%(%Y/%m/%d)T")" + + umask "$UMASK" + + # Process all the directories in the logs directory. + for DIR in "$LOGS_DIR"/*; do + cd "$DIR" 2>/dev/null || { + printf "%s: %s\\n" "${0##*/}" "failed to change directory to '$DIR'" >&2 + continue + } + + # Create a new logs directory for today. + # shellcheck disable=SC2174 + mkdir -p -m "$DIR_MODE" "$TODAY" 2>/dev/null || { + printf "%s: %s\\n" "${0##*/}" "failed to create directory '$DIR/$TODAY'" >&2 + continue + } + + # 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 + continue + } + done +} + +exit 0