From d4a368b22cdc0ce21ef11df616b19a6e35851b28 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Sun, 9 Aug 2026 12:20:54 +0200 Subject: [PATCH] add log rotate --- src/backup | 10 ++++++++++ tests/backup_tests.bats | 26 +++++++++++++++++++++++++- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/src/backup b/src/backup index e6e522b..24daa6f 100755 --- a/src/backup +++ b/src/backup @@ -27,6 +27,15 @@ get_backup_type() echo "none" } +log_rotate() +{ + local logfile="$1" + local lines= + lines=$(wc --lines "$logfile" | awk '{print $1}') + [ "$lines" -lt "100" ] && return 0 + savelog "$logfile" +} + log() { local config="$1" @@ -42,6 +51,7 @@ log() logmsg="$datetime [$type] $msg" echo "ℹ️ INFO: $logmsg -> $logfile" echo "$logmsg" >> "$logfile" + log_rotate "$logfile" } exists_needed_commands() diff --git a/tests/backup_tests.bats b/tests/backup_tests.bats index ac6eb49..189c74b 100755 --- a/tests/backup_tests.bats +++ b/tests/backup_tests.bats @@ -894,4 +894,28 @@ for type in none day week month; do --description "success log has logfile entry for type $type" \ -- \ write_log_entry "$type" -done \ No newline at end of file +done + +# bats test_tags=backup:log +@test "success no logrotate by 99 lines" { + mkdir --parents build/test + printf "logline%.0s\n" {1..99} > build/test/backup.log + + run log_rotate "build/test/backup.log" + + assert_success + [ -f "build/test/backup.log" ] + [ ! -f "build/test/backup.log.0" ] +} + +# bats test_tags=backup:log +@test "success logrotate by 100 lines" { + mkdir --parents build/test + printf "logline%.0s\n" {1..100} > build/test/backup.log + + run log_rotate "build/test/backup.log" + + assert_success + [ ! -f "build/test/backup.log" ] + [ -f "build/test/backup.log.0" ] +} \ No newline at end of file -- 2.47.3