refactor(cleanup): generalize cleanup beyond logs

Rename configuration variables and functions to reflect broader
functionality beyond just log files. Updates include renaming
LOG_DIRS_FOR_CLEANUP to DIRS_FOR_AUTODELETE and
clean_log_files to clean_directory_files. Adds safety warnings
to prevent deletion of critical HANA system logs.

BREAKING CHANGE: Config keys renamed from LOG_DIRS_FOR_CLEANUP to
DIRS_FOR_AUTODELETE and MAX_LOG_FILE_AGE_DAYS to MAX_FILE_AGE_DAYS
This commit is contained in:
2026-03-12 20:49:37 +01:00
parent a5553067b6
commit 8e0ba1878f
2 changed files with 37 additions and 34 deletions

View File

@@ -137,22 +137,22 @@ get_available_space_kb() {
df -k "$dir" 2>/dev/null | awk 'NR==2 {print $4}'
}
# Find log directories on the same mount point
# Usage: find_log_dirs_on_mount "mount_point"
# Returns: Space-separated list of log directories
find_log_dirs_on_mount() {
# Find directories for auto-delete on the same mount point
# Usage: find_autodelete_dirs_on_mount "mount_point"
# Returns: Space-separated list of directories to clean
find_autodelete_dirs_on_mount() {
local mount_point="$1"
local result=""
for log_entry in "${LOG_DIRS_FOR_CLEANUP[@]}"; do
local entry_mount="${log_entry%%:*}"
local log_dir="${log_entry#*:}"
for entry in "${DIRS_FOR_AUTODELETE[@]}"; do
local entry_mount="${entry%%:*}"
local cleanup_dir="${entry#*:}"
if [ "$entry_mount" == "$mount_point" ] && [ -d "$log_dir" ]; then
if [ "$entry_mount" == "$mount_point" ] && [ -d "$cleanup_dir" ]; then
if [ -n "$result" ]; then
result="$result $log_dir"
result="$result $cleanup_dir"
else
result="$log_dir"
result="$cleanup_dir"
fi
fi
done
@@ -160,22 +160,22 @@ find_log_dirs_on_mount() {
echo "$result"
}
# Clean old log files in a directory
# Usage: clean_log_files "/path/to/log/dir" "max_age_days"
# Clean old files in a directory
# Usage: clean_directory_files "/path/to/dir" "max_age_days"
# Returns: Number of files deleted and space freed
clean_log_files() {
local log_dir="$1"
clean_directory_files() {
local cleanup_dir="$1"
local max_age_days="${2:-7}"
local files_deleted=0
local space_freed=0
if [ ! -d "$log_dir" ]; then
log_message "CLEANUP" "Log directory '$log_dir' not found. Skipping."
if [ ! -d "$cleanup_dir" ]; then
log_message "CLEANUP" "Directory '$cleanup_dir' not found. Skipping."
echo "0:0"
return
fi
# Find and delete old log files
# Find and delete old files
while IFS= read -r -d '' file; do
if [ -f "$file" ]; then
local file_size=$(stat -c%s "$file" 2>/dev/null || echo "0")
@@ -184,12 +184,12 @@ clean_log_files() {
space_freed=$((space_freed + file_size))
}
fi
done < <(find "$log_dir" -type f -mtime +$max_age_days -print0 2>/dev/null)
done < <(find "$cleanup_dir" -type f -mtime +$max_age_days -print0 2>/dev/null)
# Also clean empty directories
find "$log_dir" -type d -empty -delete 2>/dev/null
find "$cleanup_dir" -type d -empty -delete 2>/dev/null
log_message "CLEANUP" "Deleted $files_deleted files from '$log_dir', freed $((space_freed / 1024)) KB"
log_message "CLEANUP" "Deleted $files_deleted files from '$cleanup_dir', freed $((space_freed / 1024)) KB"
echo "${files_deleted}:${space_freed}"
}
@@ -205,20 +205,20 @@ auto_cleanup() {
return 1
fi
local log_dirs=$(find_log_dirs_on_mount "$mount_point")
local cleanup_dirs=$(find_autodelete_dirs_on_mount "$mount_point")
if [ -z "$log_dirs" ]; then
log_message "CLEANUP" "No log directories configured for mount point '$mount_point'. Skipping cleanup."
if [ -z "$cleanup_dirs" ]; then
log_message "CLEANUP" "No auto-delete directories configured for mount point '$mount_point'. Skipping cleanup."
return 1
fi
log_message "CLEANUP" "Starting auto-cleanup for mount point '$mount_point'. Log dirs: $log_dirs"
log_message "CLEANUP" "Starting auto-cleanup for mount point '$mount_point'. Directories: $cleanup_dirs"
local total_freed=0
local total_files=0
for log_dir in $log_dirs; do
local result=$(clean_log_files "$log_dir" "$MAX_LOG_FILE_AGE_DAYS")
for cleanup_dir in $cleanup_dirs; do
local result=$(clean_directory_files "$cleanup_dir" "$MAX_FILE_AGE_DAYS")
local files="${result%%:*}"
local freed="${result#*:}"
total_files=$((total_files + files))