Files
AWatch-rus/scripts/legacy/aw-prune-local-state.sh
T

43 lines
1.3 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
AW_DATA_DIR="${AW_DATA_DIR:-/var/lib/activitywatch}"
BACKUP_DIR="${AW_BACKUP_DIR:-${AW_DATA_DIR}/backups}"
KEEP_DAYS="${AW_BACKUP_RETENTION_DAYS:-7}"
KEEP_LAST_DB="${AW_BACKUP_KEEP_LAST_DB:-2}"
KEEP_LAST_JSON="${AW_BACKUP_KEEP_LAST_JSON:-2}"
prune_group() {
local keep_last="$1"
local keep_days="$2"
shift 2
local files=()
local idx=0
local cutoff
cutoff="$(date -d "-${keep_days} days" +%s)"
mapfile -t files < <(find "$@" -maxdepth 1 -type f -printf '%T@ %p\n' 2>/dev/null | sort -nr | awk '{ $1=""; sub(/^ /,""); print }')
for path in "${files[@]}"; do
idx=$((idx + 1))
if [ "$idx" -le "$keep_last" ]; then
continue
fi
[ -f "$path" ] || continue
if [ "$(stat -c %Y "$path")" -lt "$cutoff" ]; then
rm -f -- "$path"
fi
done
}
mkdir -p "$BACKUP_DIR"
prune_group "$KEEP_LAST_DB" "$KEEP_DAYS" "${BACKUP_DIR}/db"
prune_group "$KEEP_LAST_JSON" "$KEEP_DAYS" "$BACKUP_DIR"
find /tmp -maxdepth 1 -type f \
\( -name 'activitywatch-*.zip' -o -name 'hayabusa-*.zip' -o -name 'aw-hayabusa-profiles.txt' \) \
-mtime +0 -delete 2>/dev/null || true
find /tmp -maxdepth 1 -type f \
\( -name 'aw-worktime-ui-bridge.py' -o -name 'views-default.json' -o -name 'apply_webui_ru_patch.out' \) \
-mtime +1 -delete 2>/dev/null || true