Skip to content

v0.16.0

Choose a tag to compare

@gfargo gfargo released this 21 Apr 04:32
· 72 commits to main since this release

Release 7 bundles three disaster-recovery improvements.

Highlights

Rollback-referenced images protected from docker prune (#40)

docker_prune --all previously deleted every image not in use by a running container — including the tags recent rollback snapshots depend on. Now docker_prune --stack <name> (automatic when called via cmd_prune) computes the protected image set from snapshots within ROLLBACK_RETENTION_DAYS (default 30) and skips them. Opt out with --no-protect or PRUNE_PROTECT_ROLLBACK_IMAGES=false.

rollback diff for snapshot-to-snapshot forensics (#42)

strut my-stack rollback diff HEAD~1 HEAD
strut my-stack rollback diff 20260420-091500 HEAD --json

Compares two rollback snapshots, rendering ADD/REMOVE/CHANGE ops for image tags. Refs accept snapshot basenames, HEAD (latest), or HEAD~N (Nth older). Shares the engine in lib/diff.sh with strut diff.

Offsite backup sync for S3/R2/B2 (#21)

# backup.conf
BACKUP_OFFSITE=s3
BACKUP_OFFSITE_BUCKET=my-bkps
BACKUP_OFFSITE_PREFIX=my-stack
BACKUP_OFFSITE_RETENTION_DAYS=90

Opt-in automatic sync after every local backup. Supports S3 via aws s3, R2 via aws s3 --endpoint-url=..., and B2 via the b2 CLI. Sync failures warn but never abort the local backup. Manual controls:

strut <stack> backup offsite status
strut <stack> backup offsite sync     # bulk sync all local backups
strut <stack> backup offsite list
strut <stack> backup offsite restore <filename>

PRs

  • #73 feat: protect rollback-referenced images from docker prune
  • #74 feat: add rollback diff for snapshot-to-snapshot forensics
  • #75 feat: add offsite backup sync for S3/R2/B2
  • #76 chore: bump version to 0.16.0

Test coverage

924/924 BATS tests green — 59 new cases across the three features.