Skip to content

Releases

v2.0.0

Choose a tag to compare

@tizbac tizbac released this 08 Nov 20:43

Salvanza for Proxmox Backup Server 2.0: release notes

Version 2.0 is the first release under the new name: Salvanza for Proxmox Backup Server (Salvanza for short), formerly Proxmox Backup Client. Project site: salvanza.org; source, releases and issues: github.com/salvanza/salvanza_client.

Version 2.0 merges a large body of work on the GUI, the background service and the backup engine into the project. The app now has Backup Sets with several schedules each, incremental folder backups with the official client's change detection, machine backups that skip free space and can leave partitions out, several backups at once, speed limits, Undelete and Roll back, client-side encryption with keys you can keep, a guided bare-metal restore ISO that also restores into a virtual machine (P2V), and 18 interface languages. With the background service installed, the computer's PBS servers and Backup Sets belong to the service, and the app connects to it with administrator rights. The command line is one program, salvanza-cli, with the commands backup-folder, backup-disk and attach-nbd. The README lists what is new; CHANGELOG.md has every change.

Downloads

All files are on the releases page, with SHA256SUMS.txt and a build provenance attestation (verifying a download). The Windows programs are not yet Authenticode-signed.

For File
Windows Salvanza-<version>-x64.msi: the app (salvanza-gui.exe), the background service (salvanza-svc.exe) and the command line (salvanza-cli.exe), in C:\Program Files\Salvanza. The branded installers (NimbusBackup-<version>-x64.msi, EtitechBackup-<version>-x64.msi) are the same build under another brand
Debian, Ubuntu, Mint salvanza_<version>_amd64.deb (x86-64), salvanza_<version>_arm64.deb (ARM 64-bit)
Fedora salvanza-<version>-1.fc44.x86_64.rpm (x86-64), salvanza-<version>-1.fc44.aarch64.rpm (ARM 64-bit)
Arch, Manjaro, EndeavourOS salvanza-<version>-1-x86_64.pkg.tar.zst (x86-64), or build it from packaging/arch/PKGBUILD with make pkgarch
Command line only The per-platform salvanza-cli archives for Windows and Linux
A machine to restore Salvanza-BMR-<version>.iso, the bare-metal restore ISO

To build a Linux package yourself, use make deb, make pkgfedora or make pkgarch (BUILD.md).

Upgrading

From Proxmox Backup Client. The upgrade is automatic. The Salvanza MSI removes an installed Proxmox Backup Client (and a Nimbus Backup or Etitech Backup install) as it would an older version of itself, and the Linux package salvanza replaces the proxmoxbackupclient and pbsgo packages. The earlier background service is removed. The first time Salvanza starts, it moves the earlier settings over once, from C:\ProgramData\ProxmoxBackupClient, %APPDATA%\ProxmoxBackupClient, ~/.proxmox-backup-guardian or /var/lib/proxmoxbackupclient, to C:\ProgramData\Salvanza, %APPDATA%\Salvanza, ~/.salvanza or /var/lib/salvanza, and keeps a dated copy of the settings files there, in pre-salvanza-<date>. The PBS servers, keys, Backup Sets and history carry on, and nothing changes on PBS.

Before Now
ProxmoxBackupClient.exe, ProxmoxBackupClientSVC.exe (service ProxmoxBackupClientSVC) salvanza-gui.exe, salvanza-svc.exe (service salvanza-svc)
proxmoxbackup-directory, proxmoxbackup-machine, proxmoxbackup-nbd salvanza-cli backup-folder, salvanza-cli backup-disk, salvanza-cli attach-nbd
Package and service proxmoxbackupclient Package salvanza, service salvanza.service
Local API header X-Proxmox-Client-Token, PBSGO_API_TOKEN, PBSGO_TOKEN_ROTATION, PBSGO_TOKEN_GRACE X-Salvanza-Token, SALVANZA_API_TOKEN, SALVANZA_TOKEN_ROTATION, SALVANZA_TOKEN_GRACE (the earlier names are still accepted)

The earlier command line names still work: the Linux packages install them as links to salvanza-cli, and the MSI as .cmd files beside it, so scripts and scheduled tasks keep running (command line manual). Nimbus Backup and Etitech Backup now have their own program names (nimbusbackup-gui, etitechbackup-gui, ...) and settings folders (NimbusBackup, EtitechBackup, ~/.nimbusbackup, ~/.etitechbackup). The Acme Backup demonstration brand is gone.

From 1.2.0-rc. Install the 2.0 MSI or package over it: it upgrades in place and keeps the settings and Backup Sets, with each set's PBS server, Proxmox VE VM type and weekly or monthly schedule. On Linux the package is now called salvanza and replaces pbsgo; the service takes over the pbsgo settings when it has none of its own.

From 1.1.x. Version 1.1 had the command-line tools only; 2.0 adds the app and the background service beside them. The machine backup (now salvanza-cli backup-disk) sends its e-mail report and exits with code 3 when some sectors could not be read, and on Windows the commands print errors instead of showing message boxes. See the command line manual.

The background service. The installers set up the background service and start it (an upgrade of a Linux package keeps a service you turned off, off). With the service, only the service reads the computer's settings folder (C:\ProgramData\Salvanza, /var/lib/salvanza), and the app asks once for administrator rights to connect to it: UAC on Windows, your password through pkexec on Linux, or an administrator's name and password on a standard account. Schedules run whether or not anyone is signed in. A user who cannot answer the prompt can choose Use my own settings and keep their own servers and Backup Sets, which run only while the app is open or in the tray; Connect later offers to copy them to the computer's. See section 15 of the GUI manual.

Change detection. Before switching a Backup Set to Data or Metadata change detection, update every machine that restores from it to 2.0: earlier versions show the folders of a split archive without their files (section 7 of the GUI manual).

Passwords on Windows. PBS tokens and passwords in config.json are encrypted for the computer the first time 2.0 starts. Going back to an earlier version afterwards means entering them again.

More

SHA-256 checksums

Verify a download with Get-FileHash <file> -Algorithm SHA256 (PowerShell) or sha256sum -c SHA256SUMS.txt. The command line archives from the cross-platform build are in checksums.txt.

1908c7a3c2186d7be1ecb5f50335169da69fd6fb46edfef0fc3d2883a6f97bd7  EtitechBackup-2.0.0-x64.msi
e09556d6ede036e26c10f6cc166f839555aaf2f3790db6e579f434576a9d736e  NimbusBackup-2.0.0-x64.msi
513f6a40293f85b3f0f11b089d958661af33bb47c8f9d8fbb7925c15ee48ace9  Salvanza-2.0.0-x64.msi
bc800551cf2ca6beef90213e9fb28e71413aa3211536e26a2ea3f235105b6c8d  Salvanza-BMR-2.0.0.iso
06723ba63301f5a7c3d57e750ac31dae4b3263cdfb41291d50c46f18c1e6e4b3  salvanza-2.0.0-1-x86_64.pkg.tar.zst
45325a2159d626802cf23f98f2bb4dcfea4b60cb4d8d9b571c26fa37cadc6f91  salvanza-2.0.0-1.fc44.aarch64.rpm
467c1f78d22840b17f609d765ff8f636b6193f3fbaa8f1a477dbd3b360521b1e  salvanza-2.0.0-1.fc44.x86_64.rpm
102a5c35f9787ca24d51fe926f69aae1510bd60f3ce0bc090a17f95ca242f3e7  salvanza-cli-v2.0.0-linux.tar.gz
d57933f74d3d71f407ab596c1994e2a5f5b2bda0336816f90e238c2a7488a99f  salvanza-cli-v2.0.0-macos.tar.gz
72ddcbdd58f5a88a2c29a2ad61304173ac7770f27e21845ef85ce27d61988579  salvanza-cli-v2.0.0-windows.zip
7a2d7e6aa0e0499e47e26aaae8005e9200bd814c89814e1895b86da03266771b  salvanza_2.0.0_amd64.deb
4ff4373f6a66f42ffff5902fd675dc3ce44c78fcfeae7a97a5ec386016318d1c  salvanza_2.0.0_arm64.deb

Everything that changed since v1.1.3

v1.1.3 (2 May 2026) shipped only the command-line tools. 2.0.0 is more than 1,400 commits later across 968 files (about 770 commits since the v1.2.0-rc.1 prerelease): the 1.2 line first, then the 2.0 work, including the merge of the reworked GUI, background service and backup engine. Both sets of changes are listed below.

2.0.0

This release merges the reworked GUI (RDEM Systems' Nimbus Backup GUI, reworked and extended by mjb-is), its background service and its backup engine into the project: Backup Sets with several schedules each, incremental folder backups that reuse unchanged files (Metadata change detection), machine backups that skip free space, several backups at once with pause and resume, Undelete and Roll back, physical-to-virtual an...

Read more

v1.2.0-rc.1

v1.2.0-rc.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 30 Oct 23:29

🚀 Proxmox Backup Client v1.2.0-rc.1

⚠️ Windows flagged the download as a virus? This is a known false positive (unsigned Go/Wails binaries inside the installer) — not a virus. See the project repository for how to verify the download. A code-signing certificate (SignPath Foundation) is on the way.

📦 Downloads

One Windows installer (.msi) per brand — no stand-alone .exe is
published. Pick the brand you are licensed for; they are the same
build, and the installed application takes its identity from its
executable name.

File Brand
ProxmoxBackupClient-<version>.msi Proxmox Backup Client (default)
NimbusBackup-<version>.msi Nimbus Backup
AcmeBackup-<version>.msi Acme Backup
EtitechBackup-<version>.msi Etitech Backup

The command-line tools are in the per-platform archives
(proxmoxbackup-cli-* and proxmoxbackupclient_go_*).

📝 What's in this release

Changes since v1.1.3

  • msi: fix the Nimbus branded installer (duplicate RemoveRegistry key)
  • ci(msi): don't copy the default brand's binaries onto themselves
  • release: ship one MSI per brand and no stand-alone exe
  • gui: clear the lint findings that blocked the release pipeline
  • ci(security): pin gosec and fix the two HIGH findings it now reports
  • ci: make prerelease tags releaseable and align versions to 1.2.0
  • installer: drop GUI autostart and clean legacy Run entries
  • machinebackup (Windows): read the end of a VSS partition from the disk
  • machinebackup: keep the config file's backupdev when -backupdev is not given
  • machinebackup (Windows): read partitions in disk order (#114)
  • pxar: skip FIFOs, sockets and device nodes instead of opening them
  • Restore: say which key an encrypted snapshot needs
  • BMR wizard: keep a restored Linux system's identity; switch off when done
  • snapshot: wait while VSS is busy; never delete all shadow copies
  • machinebackuplib: wait for the disk reader before the snapshots go (Linux)
  • pxar: a read error part way through a file no longer ends the backup
  • packaging: fix deb version for untagged builds
  • Add weekly and monthly scheduling to GUI jobs
  • Restore permissions: set any recorded owner; keep protected DACLs protected
  • gui: config tests no longer write the real config.json on Windows
  • gui: fall back to English for a key missing in the selected language
  • gui: enable or disable a scheduled job
  • gui: stop a directory backup in the middle of a folder on cancel
  • pxar: let the caller stop an archive write in the middle of a folder
  • test: give TestChunkStateEncryptedDigests the manifest entry CloseDynamicIndex writes
  • fix(pbs): send the BaseURL host in the upgrade request's Host header
  • fix(crypto): encrypted GUI backups use the keyed chunk digest; service-mode reads get the key
  • clonezilla: read volume id with xorriso, not isoinfo
  • clonezilla: also search /usr/lib/syslinux/bios for isohdpfx.bin
  • BMR wizard: refuse a target disk smaller than the backed up disk
  • BMR wizard: never offer the boot stick as the restore target
  • Back up and restore alternate data streams and NTFS extended attributes
  • Back up and restore Windows creation times
  • machinebackup: send the notification e-mail
  • BMR wizard: remove the backup's snapshot store from restored partitions
  • pxar: leave out "Recovery" only at the root of a volume
  • pbscommon: give ListSnapshots 120 s instead of 10 s
  • machinebackup: close the PBS session when a backup fails or is stopped
  • directorybackup: -no-mtime leaves real times out of the archive
  • Restore: put back every file time, also 1970 and earlier, and folder times
  • CLIs: report errors on stderr, never in a message box
  • brand: real Proxmox logo for the default brand's icons
  • brand: per-brand tray icons instead of the Wails placeholder icon
  • gui: commit wails-generated SetJobReporter bindings
  • installer: SERVICEAUTOSTART flag + document silent-install switches
  • brand: real URLs for every brand's buy-storage CTA and Nimbus links
  • fix(brand): NimbusBackup CTA must ship with the real buy-storage URL
  • fix(gui/brand): make icon and URLs work in the WebUI for branded builds
  • fix(service): surface scheduled runs in Running Jobs, fix duplicate GUI instances, locale-proof state ACLs
  • fix(sched): honour machine backup kind (host/vm); VM backup ID must be numeric
  • build(msi): run candle/light under Wine in Docker, not on the host
  • fix(msi): stage WiX inputs inside $WORK so light can resolve File/@source
  • machinebackup: skip hashing blank (all-zero) chunks
  • snapshot: delete our VSS shadow copies after every backup, through the VSS API
  • chore(gui): regenerate wails bindings for pinned_disks / unique_id / drive_letters
  • feat(gui): pin physical disks by identity, show drive letters
  • build(msi): rebuild stale binaries, not just missing or invalid ones
  • fix(elevation): run the UAC prompt and report the child's exit code
  • fix(backup): Stop is a cancellation, not a failure
  • build: add make msi and make clonezilla, fix what they uncovered
  • fix(service): register the SCM name the MSI installed, not a hardcoded one
  • Use git tag or short SHA for version across all build flows (MSI, deb, rpm, arch, docker)
  • Add Etitech Backup branding: icon, logo, brand.go entry, WiX installer, build script integration
  • Update generated GUI build artifacts (icon.ico, wailsjs bindings)
  • Fix MSI build script: fix WiX toolset URL, use existing binaries, handle Wine paths with Z: mapping, copy brand-specific SVC exes, copy icons/License.rtf, fix ProductBody.wxi for WiX 3 include format
  • Fix progress reporting from service to GUI and machine backup cancellation; harden machine backup sizing/progress; add shared backup control; add directory picker in UI; tidy running jobs UI
  • Pass per-job backup context directly to backup options; fix cancellation context
  • Accept HTTP 202 Accepted for async backup starts in API client
  • Fix machinebackuplib lint issues
  • Guard against NaN/Inf in progress calculations; add math import
  • Set config dir in Windows service startup
  • Fix App creation also for unix service
  • Use NewAppForService in BackupService class
  • Remove leftover files
  • Fix nil map in RegisterBackupCancel for service stubs; initialize cancelFuncs in App constructors
  • Register backup cancel by job ID for proper per-job cancellation
  • Fix /dev/disk/by-id resolution for Linux disks; add detailed progress bar with ETA and blocks counters to Running Jobs tab
  • Fix running jobs list and empty error messages
  • Add Running Jobs tab with red badge count and cancel functionality
  • Add backup job listing and cancellation via API; fix progress reporting with context-based cancellation
  • Fix NaN% progress in machine backup: guard division by zero when total disk size is unknown
  • Fix Linux machine backup: error out (don't silently fall back) when Use snapshots is checked but snapshot module unavailable
  • Fix Linux machine backup: respect Use snapshots flag, fall back to raw disk read when disabled or snapshot module unavailable
  • Add PBS server selection for backup jobs (one-shot + scheduled); add machine backup kind (host/vm) selection; rename Use VSS to Use snapshots (VSS/Dattobd)
  • Add /backup/machine route and shared handler in API server to fix machine backup service calls
  • Fix launch-time privilege handling: request elevation at launch with fallback to standalone; add periodic token rotation with graceful 401 re-elevate; harden Windows asInvoker flow and token ownership
  • fix(gui): no local admin required for machine backups in service mode
  • fix(packaging): stage-source must not drop files tracked under gui/build
  • build: package the current source tree, make test/lint actually run
  • feat(gui/frontend): run-now button, name guard, list-join guards
  • fix(gui): server saves, scheduled-job round-trip and run-now
  • Fix get ticket
  • chore(arch): bump PKGBUILD _commit to ae5a771
  • chore(arch): ignore makepkg build leftovers
  • fix(gui): restore Multi-PBS wails bindings lost in c85eb29
  • fix(debian,fedora): make .deb and .rpm builds correct and complete
  • fix(arch): make PKGBUILD build in a clean Arch environment
  • feat: Linux packaging + service integration, Windows/CI build tooling
  • Clonezilla BMR: restore encrypted backups (key menu, USB key, passphrase)
  • pbsnbd: read the first chunk before attaching the NBD device
  • pbscommon: skip the key file permission check on Windows
  • docs: point elastio-snap at the maintained Axcient fork
  • directorybackup: back up several directories in one run
  • Read passphrase-protected key files written by proxmox-backup-client
  • Add elevation requirements for scheduled job modifications
  • Restore the data between the MBR and the first partition in the BMR flow
  • patch-clonezilla: add the PBS bare-metal restore entry to isolinux.cfg
  • patch-clonezilla: skip patches whose change is already in the base ISO
  • feat: Linux systemd service for scheduled backups + GUI elevation support
  • gui: add dattobd/elastio-snap snapshot module detection and UI indication
  • build: drop fyne, link webkit2gtk-4.1 on Linux
  • GUI encryption support: multi-PBS key propagation, service build wiring, key mgmt UI + tests
  • machinebackuplib: add bios: ovmf for GPT boot disks
  • Generated VM config: declare each disk with a #qmdump#map line
  • Drop iothread=1 from generated SATA drive config
  • machinebackuplib: say what to do when a "vm" backup has a non-numeric ID
  • gui: back machines up as "host", not "vm"
  • machinebackuplib: fix VM config template for BackupType "vm"
  • restore: re-apply captured NTFS ACLs (Windows) and POSIX ACLs/xattrs (Linux)
  • feat(snapshot): call elastio-snap/dattobd via ioctl, not CLI wrappers
  • Document that the BMR wizard is English/UK-only by design, for now
  • Add a fully automated PBS Bare Metal Restore boot entry for the Clonezilla ISO
  • Fix zstd decoder goroutine deadlock in chunk decompression
  • fedora: add pbsgo.spec and dockerized build-rpm.sh
  • debian: fall ba...
Read more

v1.1.3

Choose a tag to compare

@tizbac tizbac released this 02 May 14:09

Fixed extremely slow incremental backup by replacing hashmap implementation for known chunks , over 1000x speed increase on reading previous index
Fixed a deadlock in pbsnbd where the continuous creation and destroy of zstd decoder with concurrency caused a deadlock , maybe a bug in zstd implementation

v1.1.2

Choose a tag to compare

@tizbac tizbac released this 01 Mar 15:16

Fixed case where NTFS ( vss snapshot ) finished before partition end
Added BSD targets

v0.1.1

Choose a tag to compare

@tizbac tizbac released this 27 Feb 22:50

Fixed a bug about disk size not being a multiple of 4MB

v0.1.0

v0.1.0 Pre-release
Pre-release

Choose a tag to compare

@tizbac tizbac released this 27 Feb 00:54
  • Block level backup for files, block devices and whole HDD ( Using VSS snapshots on windows )
  • Various fixes and improvements
  • Dropped CGO dependency

v0.0.5

Choose a tag to compare

@tizbac tizbac released this 21 Nov 00:54

New:

  • Stream backup ( Pipe to stdin to backup data such as SQL dumps ) , do not use compressed data , ever , it will make buzhash useless

Fixes:

  • Fix an edge case in chunking code where 2 chunks at once or more had to be emitted, theoretically writes were so small that would have been never triggered
  • Fixed PXAR encoding, Last goodbye item had wrong/absolute offset , disrupting deduplication/buzhash

v0.0.4

Choose a tag to compare

@tizbac tizbac released this 18 Sep 23:03
1fb01da

Changelog

  • fcd7ca9 Add flag backup-id
  • ac18c1b Fix commit c224905
  • da1c05d Merge pull request #24 from egandro/build-instructions
  • e291f07 Merge pull request #29 from Poehli/patch-1
  • d68e4bf Merge pull request #30 from lookup82/Feature_backup-id
  • 06fdf7c Merge pull request #33 from giuseongit/enhances
  • 6578881 Merge pull request #37 from dalf/fix_issue_36
  • 1fb01da Merge pull request #39 from pr-consulting-eu/certificate-validation
  • 3db0a69 Update README.md
  • 9e2c012 added build instructions
  • c224905 chore: extract backup function from main
  • 68db2e5 feat: add support for json configuration
  • df85055 feat: add the capability to send mail notifications
  • 4457b63 feat: allow not defining cert fingerprint if valid certificate is used
  • 00cb938 fix
  • ace6224 fix: better error handling
  • d130a81 hostname moved into if

v0.0.3

Choose a tag to compare

@github-actions github-actions released this 25 Mar 22:24

Changelog

  • cb89a7a Add flag namespace
  • 0e1fa32 Fix wrong backup logic leading to corrupted / empty backup
  • ea400df Merge branch 'master' into master
  • 8366461 Merge pull request #10 from jochumdev/feat/fix_big_catalog
  • 7f517a9 Merge pull request #11 from jochumdev/feat/osx_releaser
  • 457bbe1 Merge pull request #14 from lookup82/master
  • 8f905cd Merge pull request #15 from Tontonjo/patch-1
  • 649871b Merge pull request #8 from jochumdev/feat/goreleaser_workflow
  • 7a234cb feat: add compiled files to .gitignore.
  • f6a2ea2 feat: add goreleaser workflow on git tag
  • 815e205 feat: add support for osx cross compiled releases
  • 981c004 feat: some refactorings.
  • 14bfc99 fix: catalog upload loop on big catalogs.
  • af8d6e1 fix: goreleaser GITHUB_TOKEN
  • 3e53342 fix: make cli version of the client on release
  • 050439f fix: remember known chunks and do not send them twice.
  • 3a17d51 md synthax correction
  • 5d7961a some clarifying in usage

V0.0.2

V0.0.2 Pre-release
Pre-release

Choose a tag to compare

@tizbac tizbac released this 20 Dec 23:49

Fixed an issue where client would get stuck in case of authentication failure
Added CLI Version to see debug output for troubleshooting