Skip to content

fix(kopiur): snapshot daily instead of hourly - #6089

Merged
kashalls merged 1 commit into
mainfrom
kashall/kopiur-daily-schedule
Nov 13, 2026
Merged

kashalls merged 1 commit into
mainfrom
kashall/kopiur-daily-schedule

Conversation

@kashalls

Copy link
Copy Markdown
Member

Summary

Changes the shared kopiur SnapshotSchedule cron from H * * * * (hourly) to H H * * * (once a day, at a per-app hashed hour and minute).

Why

The puddle-kopiur B2 bucket reached 1.24 TB while the live repository is ~124 GB. Kopia was uploading ~500 GB/month of packs that maintenance deleted again within days (median pack lifetime 4 days).

Retention is keepDaily: 14 / keepWeekly: 4, so 23 of every 24 hourly snapshots were pruned and their unique content garbage-collected. SQLite databases rewrite pages throughout the file, so most of their ~2 MB chunks were new on every run. Measured new data per hourly run:

App File New per run
qui qui.db 627 MB
sonarr sonarr.db 441 MB
qbittorrent torrents.db 159 MB
home-assistant home-assistant_v2.db 95 MB
autobrr autobrr.db 110 MB

All other apps were under 30 MB per run.

Daily snapshots keep the same retained restore points and should cut upload churn by roughly 20x. Kopiur supports H in the hour field (crates/api/src/jitter.rs, range 0-23).

The hidden-version backlog is handled separately by a B2 lifecycle rule (daysFromHidingToDeleting: 3), set on the bucket outside GitOps.

Retention only keeps daily and weekly snapshots, so 23 of every 24 hourly
uploads were pruned and garbage-collected. SQLite databases (qui, sonarr,
qbittorrent, home-assistant, autobrr) re-upload most of their chunks each run,
which produced ~500GB/month of pack churn in B2.

Signed-off-by: Jordan Jones <git@svcs.ok8.sh>
@waifuz-bot waifuz-bot Bot added the area/kubernetes Changes made in the kubernetes directory label Nov 13, 2026
@waifuz-bot

waifuz-bot Bot commented Nov 13, 2026

Copy link
Copy Markdown
Contributor

Warning

  • 26 resources · 26 apps: large change set; more ground to cover than a typical PR; review with extra care

Note

26 resources changed across 26 apps

Blast radius

  • Kustomization default/immich: 1 dependent (default/immich-frame)
  • Kustomization default/mosquitto: 1 dependent (default/home-assistant)

konflate 0.6.6 · rendered 88f824f · full diff →

@kashalls
kashalls merged commit 36790a9 into main Nov 13, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/kubernetes Changes made in the kubernetes directory

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant