> ## Documentation Index
> Fetch the complete documentation index at: https://snapr.seshuk.im/llms.txt
> Use this file to discover all available pages before exploring further.

# bunny.net

> Pull files from a bunny.net Storage Zone over the HTTP API, with optional Pull Zone token auth and incremental sync.

`type: bunny` pulls files from a [bunny.net Storage Zone](https://bunny.net/storage/) using the bunny.net HTTP API. No external binaries are required.

## Example

```yaml snapr.yaml theme={null}
sources:
  - type: bunny
    endpoint: storage.bunnycdn.com
    zoneName: my-zone
    accessKey: env:BUNNY_KEY
    path: /uploads
    excludes:
      - '*.tmp'
```

## Options

| Option                 | Type      | Required | Default   | Description                                                                                                                                   |
| ---------------------- | --------- | -------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| `type`                 | `bunny`   | Yes      |           |                                                                                                                                               |
| `endpoint`             | string    | Yes      |           | Storage endpoint, for example `storage.bunnycdn.com` or a regional variant.                                                                   |
| `zoneName`             | string    | Yes      |           | Storage Zone name.                                                                                                                            |
| `accessKey`            | string    | Yes      |           | Storage Zone password / API key. Read-only access is sufficient. Use `env:`.                                                                  |
| `path`                 | string    | No       | zone root | Remote sub-path inside the zone to start scanning from.                                                                                       |
| `syncPath`             | string    | No       |           | Local directory used as a persistent cache. When set, snapr keeps already-downloaded files between runs and only fetches new or changed ones. |
| `excludes`             | string\[] | No       |           | Glob patterns matched against zone-relative paths. Matching files are skipped.                                                                |
| `extraParams.workers`  | string    | No       | `10`      | Parallel download workers, max `30`.                                                                                                          |
| `pullZoneHostname`     | string    | No       |           | Optional Pull Zone hostname for token-authenticated downloads of private files.                                                               |
| `pullZoneTokenAuthKey` | string    | No       |           | Pull Zone token auth key.                                                                                                                     |
| `pullZoneTokenTTL`     | int       | No       |           | Token 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 that is cleaned up after the run. With `syncPath`, it reuses the directory across runs and skips files whose size and last-modified time already match locally — turning subsequent backups into incremental fetches.

The downloaded tree is then compressed, encrypted, and uploaded to the configured [storages](/configuration/storages/overview). There is no direct zone-to-storage transfer — see [how remote sources are fetched](/configuration/sources/overview#how-remote-sources-are-fetched).

## Notes

### Incremental sync with a persistent cache

```yaml snapr.yaml theme={null}
sources:
  - type: bunny
    endpoint: storage.bunnycdn.com
    zoneName: my-zone
    accessKey: env:BUNNY_KEY
    syncPath: /var/cache/snapr/bunny
    extraParams:
      workers: '20'
```

## Related

* [Sources overview](/configuration/sources/overview)
* [bunny.net Storage](/configuration/storages/bunny) — use bunny.net as a backup destination
