You're reading the open-source Community docs. Plakar also offers Control Plane, the enterprise version. It's a virtual appliance with a web-based interface for centralized backup management across your infrastructure. View Control Plane docs →

S3

The S3 integration enables backup and restoration of S3 buckets through S3-compatible APIs. All bucket contents including objects, metadata, and folder hierarchies are captured and stored in a Kloset store with encryption and deduplication.

The S3 integration provides three connectors:

Connector type Description
Source connector Back up S3 buckets into a Kloset store.
Storage connector Use S3-compatible storage as a Kloset store backend.
Destination connector Restore bucket contents from a Kloset store back to S3.

Installation

The S3 package can be installed using pre-built binaries or compiled from source.

Pre-compiled packages are available for common platforms and provide the simplest installation method.

Logging In

Pre-built packages require Plakar authentication. See Logging in to Plakar for details.

Install the S3 package:

$ plakar pkg add s3

Verify installation:

$ plakar pkg list

Source builds are useful when pre-built packages are unavailable or when customization is required.

Prerequisites:

  • Go toolchain compatible with your Plakar version

Build the package:

$ plakar pkg build s3

A package archive will be created in the current directory (e.g., s3_v1.0.0_darwin_arm64.ptar).

Install the package:

$ plakar pkg add ./s3_v1.0.0_darwin_arm64.ptar

Verify installation:

$ plakar pkg list

To list, upgrade, or remove the package, see managing packages guide.

Configuration

Addressing styles

S3-compatible services use one of two addressing styles for buckets.

Path-style (default) — the bucket name is part of the URL path:

s3://<S3_ENDPOINT>/<BUCKET_NAME>

Virtual-hosted-style — the bucket name is part of the hostname. Required by some services that do not support path-style access (such as AWS S3 in certain regions):

s3://<BUCKET_NAME>.<S3_ENDPOINT>

Set virtual_host=true when using virtual-hosted-style addressing.

Configuration options

These options apply to all three connectors (source, storage, destination).

Option Required Description
location Yes S3 endpoint and bucket. See Addressing styles above.
access_key Yes S3 Access Key ID.
secret_access_key Yes S3 Secret Access Key.
passphrase No Encryption passphrase. If not set, Plakar will prompt interactively. Source connector only.
use_tls No Enable TLS. Recommended for all internet-facing connections.
virtual_host No Use virtual-hosted-style addressing. Defaults to false.
tls_insecure_no_verify No Skip TLS certificate verification. Defaults to false. See warning below.
TLS Certificate Verification

Setting tls_insecure_no_verify=true disables TLS certificate verification, leaving your connection open to man-in-the-middle attacks. Only use this in controlled environments with self-signed certificates on trusted networks. Never use it with AWS S3, public cloud storage, or any production data.

Source connector

The source connector retrieves objects from S3 buckets and stores them in a Kloset store with encryption and deduplication.

flowchart LR

subgraph Source["S3 Bucket"]
  FS["Objects"]
end

subgraph Plakar["Plakar"]
  Connector["Retrieve objects via
S3 API"] Transform["Encrypt & deduplicate"] Connector --> Transform end Source --> Connector Store["Kloset Store"] Transform --> Store

Register the source and run a backup:

$ plakar source add my-s3-bucket \
  location=s3://<S3_ENDPOINT>/<BUCKET_NAME> \
  access_key=<YOUR_ACCESS_KEY_ID> \
  secret_access_key=<YOUR_SECRET_ACCESS_KEY> \
  use_tls=true

$ plakar at /var/backups backup "@my-s3-bucket"

Storage connector

The storage connector uses S3-compatible storage as the backend for a Kloset store. All Plakar data—snapshots, chunks, metadata—is stored as S3 objects.

flowchart LR

subgraph Sources["Any Source"]
  FS["Data"]
end

subgraph Plakar["Plakar"]
  Transform["Encrypt & deduplicate"]
  Connector["Store via
S3 API"] Transform --> Connector end Sources --> Transform subgraph Storage["S3 Storage"] Store["Kloset Store"] end Connector --> Store

Register the store, initialize it, and run a backup:

$ plakar store add my-s3-store \
  location=s3://<S3_ENDPOINT>/<BUCKET_NAME> \
  access_key=<YOUR_ACCESS_KEY_ID> \
  secret_access_key=<YOUR_SECRET_ACCESS_KEY> \
  use_tls=true

$ plakar at "@my-s3-store" create
$ plakar at "@my-s3-store" backup /var/www

Destination connector

Restores objects from a Kloset store back to an S3 bucket.

flowchart LR

Store["Kloset Store"]

subgraph Plakar["Plakar"]
  Transform["Decrypt & reconstruct"]
  Connector["Restore via
S3 API"] Transform --> Connector end Store --> Transform subgraph Destination["S3 Bucket"] FS["Objects"] end Connector --> Destination

Register the destination and restore a snapshot:

$ plakar destination add my-s3-restore \
  location=s3://<S3_ENDPOINT>/<BUCKET_NAME> \
  access_key=<YOUR_ACCESS_KEY_ID> \
  secret_access_key=<YOUR_SECRET_ACCESS_KEY> \
  use_tls=true

$ plakar at /var/backups restore -to "@my-s3-restore" <snapshot_id>