Bunny Storage (source)

type: bunny — pulls files from a Bunny Storage Zone using the Bunny HTTP API.

Prerequisites

  • No external binaries required.
  • A Storage Zone access password (FTP/API password). Read-only is sufficient.
  • For private files served via a Pull Zone, optionally a Pull Zone token auth key.

Fields

FieldTypeRequiredNotes
typebunnyyes
endpointstringyesstorage endpoint, e.g. storage.bunnycdn.com or a regional variant
zoneNamestringyesStorage Zone name
accessKeystringyesStorage Zone password / API key (use env:)
pathstringnoremote sub-path inside the zone to start scanning from (default: zone root)
syncPathstringnolocal directory used as a persistent cache. When set, snapr keeps already-downloaded files between runs and only fetches new/changed ones.
excludesstring[]noglob patterns matched against zone-relative paths (skipped)
extraParams.workersstringnoparallel download workers (default 10, max 30)
pullZoneHostnamestringnooptional Pull Zone hostname for token-authenticated downloads
pullZoneTokenAuthKeystringnoPull Zone token auth key
pullZoneTokenTTLintnotoken TTL in seconds

How it works

snapr lists the Storage Zone (recursively under path if set) and downloads each file. Without syncPath it uses a temporary directory cleaned up after the run. With syncPath it reuses the directory across runs and skips files whose size + LastModified already match locally — turning subsequent backups into incremental fetches.

The downloaded tree is then compressed, encrypted, and uploaded to the configured storages. There is no direct zone-to-storage transfer. See Sources → How remote sources are fetched.

Example

sources:
  - type: bunny
    endpoint: storage.bunnycdn.com
    zoneName: my-zone
    accessKey: env:BUNNY_KEY
    path: /uploads
    excludes:
      - '*.tmp'

Example — incremental sync with persistent cache

sources:
  - type: bunny
    endpoint: storage.bunnycdn.com
    zoneName: my-zone
    accessKey: env:BUNNY_KEY
    syncPath: /var/cache/snapr/bunny
    extraParams:
      workers: '20'