mirror of
https://github.com/Dvorinka/Productier.git
synced 2026-06-04 12:33:01 +00:00
first commit
This commit is contained in:
Executable
+47
@@ -0,0 +1,47 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
||||
BACKUP_ROOT="${1:-$ROOT_DIR/backups}"
|
||||
KEEP_COUNT="${2:-14}"
|
||||
|
||||
if [[ "${1:-}" == "--help" || "${1:-}" == "-h" ]]; then
|
||||
cat <<'USAGE'
|
||||
Usage:
|
||||
scripts/ops/prune-backups.sh [backup-root] [keep-count]
|
||||
|
||||
Examples:
|
||||
scripts/ops/prune-backups.sh
|
||||
scripts/ops/prune-backups.sh /var/backups/productier 30
|
||||
USAGE
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if ! [[ "$KEEP_COUNT" =~ ^[0-9]+$ ]] || [[ "$KEEP_COUNT" -lt 1 ]]; then
|
||||
echo "[error] keep-count must be a positive integer" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! -d "$BACKUP_ROOT" ]]; then
|
||||
echo "[info] backup root does not exist; nothing to prune"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
mapfile -t backup_dirs < <(
|
||||
find "$BACKUP_ROOT" -mindepth 1 -maxdepth 1 -type d -printf '%f\n' \
|
||||
| grep -E '^[0-9]{8}T[0-9]{6}Z$' \
|
||||
| sort -r
|
||||
)
|
||||
|
||||
if [[ "${#backup_dirs[@]}" -le "$KEEP_COUNT" ]]; then
|
||||
echo "[info] no pruning needed (${#backup_dirs[@]} backup(s), keep=$KEEP_COUNT)"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
for backup_name in "${backup_dirs[@]:$KEEP_COUNT}"; do
|
||||
target="$BACKUP_ROOT/$backup_name"
|
||||
echo "[step] removing old backup: $target"
|
||||
rm -rf "$target"
|
||||
done
|
||||
|
||||
echo "[ok] pruned backups, kept latest $KEEP_COUNT"
|
||||
Reference in New Issue
Block a user