Destinations

Backup & Restore~9 min

Three storage backends supported by ProxMenux Backup: local archive, Proxmox Backup Server (recommended) and Borg. Each receives the same three-payload archive; they differ in storage format, deduplication, encryption model and network requirements.

Same payload, three backends

Every backup produces the same three payloads (rootfs, manifest, applications). What changes between destinations is how those payloads are stored and how the operator retrieves them for a restore. Each backend is implemented as a separate function in backup_host.sh_bk_local, _bk_pbs, _bk_borg — but all four share the same staging step (hb_prepare_staging) and the same restore code path. The choice of destination only affects the write and the retrieval; it does not change what a restore does or how it consumes the archive.

Feature comparison

The following table lists the concrete differences between the three backends as they behave in ProxMenux today. All values describe observed behaviour of the backend itself, not editorial recommendations.

featureLocalProxmox Backup Server (recommended)Borg
Storage formatSingle .tar.zst file (or .tar.gz if zstd is absent).PBS backup (.pxar chunks in the datastore).Borg archive inside a Borg repository (segment files).
Compressionzstd (default level) via tar --zstd. gzip fallback.PBS-managed. The client streams uncompressed; the server chunks + compresses.Borg's built-in (lz4 default). Configurable at repo init.
DeduplicationNone. Each backup is a full independent archive.Full chunk-level deduplication across all backups in the datastore.Full chunk-level deduplication across all archives in the repository.
Encryption at restNone (relies on filesystem-level protection).Optional client-side keyfile encryption. Recovery blob uploaded as separate backup group when enabled.Optional repokey encryption (key stored in the repo, unlocked by a passphrase).
Retention / pruningApplied per scheduled job via KEEP_LAST. Old archives (and their sidecars + runner logs) are deleted symmetrically. Interactive backups do not prune.Applied per scheduled job via proxmox-backup-client prune --keep-last / --keep-daily / --keep-weekly. Interactive backups do not prune.Applied per scheduled job via borg prune --keep-last / --keep-daily / --keep-weekly. Interactive backups do not prune.
NetworkNone. Writes to a local mount point (typically an internal disk or a USB drive).TCP to the PBS server (default port 8007). Requires PBS credentials + fingerprint.Local filesystem path or SSH tunnel to a remote Borg host.
Dependenciestar, zstd (present on Proxmox by default).proxmox-backup-client package (bundled with Proxmox VE 8+).borg binary. Auto-provisioned by ProxMenux from the Monitor AppImage bundle when missing.
Restore accessAny host with tar+zstd can extract the archive. No PBS/Borg needed.Requires proxmox-backup-client + PBS credentials + the keyfile (if encrypted).Requires borg + the repository path + the passphrase (if encrypted).

The archive layout does not change with the destination

Inside any of the three destinations, the same rootfs/ + metadata/ + manifest.json layout described in How it works is present. A .tar.zst extracted from a local archive, a .pxar restored from PBS, and a Borg archive extracted with borg extract all yield an identical directory tree. The restore code path (_rs_check_layout, _rs_apply, _rs_prepare_pending_restore) reads the same three payloads without knowing which destination they came from.

Extracting a backup outside of ProxMenux

Any of the three archive formats can be read with standard tools without ProxMenux installed on the reading host. The commands below produce the same directory tree that a restore consumes internally.

Local

# From a local .tar.zst archive:
tar --zstd -xf hostcfg-HOST-TIMESTAMP.tar.zst

# From a .tar.gz fallback:
tar -xzf hostcfg-HOST-TIMESTAMP.tar.gz

Proxmox Backup Server (recommended)

# From a PBS backup (requires proxmox-backup-client):
proxmox-backup-client restore \
    --repository USER@REALM@HOST:DATASTORE \
    host/hostcfg-HOST/BACKUP-TIME \
    hostcfg.pxar /tmp/hostcfg

# Add --keyfile KEY-PATH when the backup is encrypted.

Borg

# From a Borg archive (requires borg binary + passphrase for encrypted repos):
borg extract REPO-PATH::ARCHIVE-NAME

# On a remote SSH-served repo:
borg extract ssh://USER@HOST:PORT/REPO-PATH::ARCHIVE-NAME

The extracted tree can then be inspected manually or fed to a manual restore. See the individual destination pages for the exact retrieval flow ProxMenux uses under the hood.

Per-destination detail

Each destination has its own page covering the configuration flow, the on-disk format and the retrieval command used by the restore.

  • Local archive — pre-configuring a local target, USB drive mounting, the safety check against writing the archive into itself, the sidecar JSON that lets the Monitor identify the file.
  • Proxmox Backup Server (recommended) — datastore selection, credentials and fingerprint, encryption keyfile lifecycle, recovery passphrase, uploading the recovery blob to PBS for fresh-install recovery.
  • Borg — local vs. SSH-served repositories, the Borg binary sourcing (system / cache / Monitor AppImage bundle / GitHub download), repository initialization, passphrase handling, SSH key setup for remote repos.