|| return 0
}
+cleanup_old_backups()
+{
+ local config="$1"
+ local count="$2"
+ local max_count=
+ local delete_count=
+ local backup_path=
+ local backup_name=
+ max_count=$(echo "$config" | jq --raw-output '.backup_count')
+ backup_path=$(echo "$config" | jq --raw-output '.backup_path')
+ backup_name=$(echo "$config" | jq --raw-output '.backup_name')
+
+ [ "$count" -lt "$max_count" ] \
+ && echo "ℹ️ INFO: no backup to cleanup" \
+ && return 0
+
+ echo "ℹ️ INFO: current backup count $count"
+ delete_count=$(("$count" - "$max_count"))
+ echo "ℹ️ INFO: delete backup count $delete_count"
+
+ mapfile -t backups < <(find "$backup_path" \
+ -maxdepth 1 \
+ -name \
+ "*_${backup_name}" \
+ | sort \
+ | head --lines "$delete_count")
+
+ local backup
+ for backup in "${backups[@]}"; do
+ echo "🗑️ INFO: delete ${backup##*/}"
+ rmdir "$backup"
+ done
+}
+
main()
{
local CONFIG_FILE=${CONFIG_FILE:="config.yaml"}
backup_count=$(get_backup_count "$config") \
|| return $?
echo "ℹ️ INFO: backup count: $backup_count"
+ cleanup_old_backups "$config" \
+ "$backup_count"
echo "✅ SUCCESS: backup"
}
backup_machines() {
:
}
+ cleanup_old_backups() {
+ :
+ }
run main
backup_machines() {
:
}
+ cleanup_old_backups() {
+ :
+ }
run main
backup_machines() {
:
}
+ cleanup_old_backups() {
+ :
+ }
run main
backup_machines() {
:
}
+ cleanup_old_backups() {
+ :
+ }
run main
backup_machines() {
:
}
+ cleanup_old_backups() {
+ :
+ }
run main
machine_backup_pathes() {
:
}
+ cleanup_old_backups() {
+ :
+ }
run main
path_backup() {
:
}
+ cleanup_old_backups() {
+ :
+ }
run main
assert_success
}
}'
}
+ cleanup_old_backups() {
+ :
+ }
run main
assert_success
"build/1999-12-30_01_backup" \
"build/1999-12-31_01_backup" \
"build/2000-01-01_01_backup"
- rm --recursive --force "build/2000-01-02_backup"
+ rm --recursive --force "build/2000-01-01_02_backup"
+}
+
+@test "success no backup to cleanup info" {
+ run main
+
+ assert_success
+ assert_line --index 0 "⭐ START: backup"
+ assert_line --partial "ℹ️ INFO: no backup to cleanup"
+}
+
+@test "success cleanup one backup" {
+ local num=
+ for i in {1..5}; do
+ num=$(printf "%02d" "$i")
+ mkdir --parents "build/1999-10-${num}_01_backup"
+ mkdir --parents "build/1999-11-${num}_01_backup"
+ done
+ for i in {1..3}; do
+ num=$(printf "%02d" "$i")
+ mkdir --parents "build/1999-12-${num}_01_backup"
+ done
+ mkdir --parents "build/1999-12-16_01_backup"
+ mkdir --parents "build/1999-12-24_01_backup"
+ run main
+
+ assert_success
+ assert_line --index 0 "⭐ START: backup"
+ assert_line --partial "ℹ️ INFO: current backup count 16"
+ assert_line --partial "ℹ️ INFO: delete backup count 1"
+ assert_line --partial "🗑️ INFO: delete 1999-10-01_01_backup"
+ [ ! -d build/1999-10-01_01_backup ]
+ rmdir build/1999-*
}
\ No newline at end of file