Profile
Back to NewsBack
GitHub Trending 4 min
Reader Mode
PlakarKorp/plakar: plakar is a backup solution powered by Kloset and ptar

PlakarKorp/plakar: plakar is a backup solution powered by Kloset and ptar

15 hours ago

Plakar: open source backup engine

Plakar: open source backup engine

Encrypted, deduplicated, verifiable, and scalable.

Back up anything, store anywhere, restore everywhere, with zero-trust encryption and no vendor lock-in.

Join our Discord community</a> Subscribe on YouTube</a> Join our Subreddit</a>

codecov</a>

Deutsch | Español | français | 日本語 | 한국어 | Português | Русский | 中文

What is Plakar?

Plakar is an open-source backup solution powered by Kloset and ptar. It creates snapshots of your data, stores them in an encrypted and deduplicated store, and lets you inspect, verify, and restore them later.

Plakar stores backups in a Kloset, an open-source, immutable data store that enables the implementation of advanced data protection scenarios.

Through integrations, Plakar can back up and restore databases, Kubernetes workloads, object stores, and other sources alongside regular files.

What sets Plakar apart:

  • snapshots are browsable: you can inspect their contents, diff two snapshots, or restore a single file without touching the rest;
  • every snapshot is independently verifiable without restoring anything;
  • backups are deduplicated and compressed, so keeping many snapshots does not multiply storage costs;
  • encryption covers both data and metadata, with an audited cryptography implementation;
  • Plakar is extensible through integrations for additional sources, storage backends, and destinations.
Plakar can be used from the command line or through its built-in web UI.

Quickstart

# Install
go install github.com/PlakarKorp/plakar@latest

Create a local repository

plakar at /var/backups create

Back up a directory

plakar at /var/backups backup /etc

List snapshots

plakar at /var/backups ls

Restore a snapshot

plakar at /var/backups restore -to /tmp/restore <snapshot-id>

Open the web UI

plakar at /var/backups ui

Prebuilt binaries are available at https://www.plakar.io/download. For a full walkthrough, see the quickstart guide.

Installation

Prebuilt binaries

Download a binary for your platform: https://www.plakar.io/download

Build from source

Plakar requires Go 1.23.3 or higher.

go install github.com/PlakarKorp/plakar@latest

@latest installs the latest release, which includes the web UI. A build of the main branch does not: with go install github.com/PlakarKorp/plakar@main, or make in a clone, plakar ui serves the API and a page explaining how to get the UI. To build the UI in a clone, run make ui before make; it requires Node.js and pnpm.

More with Plakar

Archives. You can export one or more snapshots as a .ptar archive using plakar ptar. A .ptar file is a self-contained, deduplicated, compressed, and encrypted archive.

Integrations. Plakar supports additional backup sources and storage backends through its package manager. Available integrations include PostgreSQL, MySQL, etcd, Kubernetes, S3-compatible object stores, and more.

plakar pkg add <integration>

Distributed stores. Kloset stores can be synchronized across locations to implement 3-2-1 backup strategies or more advanced push, pull, and sync workflows across heterogeneous environments.

plakar at /var/backups sync to @s3

See the documentation for the full list of supported workflows.

Documentation

https://www.plakar.io/docs/community

Contributing and reporting issues

Please read the contributing guidelines and code of conduct before opening a pull request.

If you find a bug or want to request a change, open an issue:

https://github.com/PlakarKorp/plakar/issues

Releasing

Release tags carry the built web UI, main does not. Releases are cut from a release/vX.Y branch: create it from main for a new minor version, and reuse it for its patch releases. To release vX.Y.Z:

git switch release/vX.Y        # for vX.Y.0: git switch -c release/vX.Y main

set version to "vX.Y.Z" in utils/utils.go

make release-ui git commit -am "release vX.Y.Z" git tag vX.Y.Z git push origin release/vX.Y vX.Y.Z

Run make release-ui for every release, patch releases included: the branch already carries the previous release's UI, and the release workflow refuses a tag whose UI was not built from its own ui/web/src.

Community

Changelog

See CHANGELOG.md for release notes and version history.

Chat with me