Hello everyone,
First of all, thank you for stopping by.
Just to be clear: this thread is not an advertisement, a comparison, or any criticism of vzdump and Proxmox Backup Server.
They are phenomenal, industry-standard tools built by people who know this platform far better than I do.
If you are happy with your backups, you are doing it right.
If fact... I use vzdump too
I am the author of zpaqfranz, an open-source (MIT) archiver.
This means, BTW, that I gain no money, then you can continue reading
I recently added support for Proxmox guests, but my server farm is small.
What truly counts is how it behaves on diverse, real-world setups.
Therefore, I am kindly asking (only if you are curious and have spare time) for help testing it.
Any feedback (especially "this is wrong, and here is why") is immensely welcome.
What is zpaqfranz?
Something like 7z on steroid
Project pages: https://github.com/fcorbelli/zpaqfranz
https://sourceforge.net/projects/zpaqfranz/
The key element (on standard vzdump) is the deduplicator, aka can save multiple files just like snapshots.
Quick Installation
You need version 65.17 or later.
Here for example https://github.com/fcorbelli/zpaqfranz/releases
Built for any recent Debian/PVE (tested on PVE 9.2), with something like:
(Or (even better) build it yourself from zpaqfranz.cpp with g++ -O3 -Dunix zpaqfranz.cpp -o zpaqfranz -pthread -ldl)
Two Backup Approaches
1. proxvzdump (The "Universal" Way)
It runs vzdump and archives the stream WITH DEDUPLICATION
How?
2. zfsproxbackup (The "Targeted" Way)
No vzdump: takes a storage snapshot and reads the disks directly
Checking & Restoring
Check integrity and list versions:
Extract a single file from a container backup:
Where Your Help is Most Needed
Real-world scenarios are invaluable:
What to Report (Here or on GitHub)
If something goes wrong (or even if it just works!), sharing these details helps immensely:
Issues: https://github.com/fcorbelli/zpaqfranz/issues
---
Thank you very much for reading, and a heartfelt thanks to anyone willing to test this out.
Your setups make all the difference, and a special thanks to the Proxmox team and community for an incredible platform!
Kind regards,
Franco
PS And yes, there is a (kind of) '80 console too
First of all, thank you for stopping by.
Just to be clear: this thread is not an advertisement, a comparison, or any criticism of vzdump and Proxmox Backup Server.
They are phenomenal, industry-standard tools built by people who know this platform far better than I do.
If you are happy with your backups, you are doing it right.
If fact... I use vzdump too
I am the author of zpaqfranz, an open-source (MIT) archiver.
This means, BTW, that I gain no money, then you can continue reading
I recently added support for Proxmox guests, but my server farm is small.
What truly counts is how it behaves on diverse, real-world setups.
Therefore, I am kindly asking (only if you are curious and have spare time) for help testing it.
Any feedback (especially "this is wrong, and here is why") is immensely welcome.
Please note: This code is still marked as not ready for production. Run it alongside your usual backups, never in place of them, and start with a small, disposable guest.
What is zpaqfranz?
Something like 7z on steroid
- Standalone: No server, no database, no repository configuration needed.
- Append-only archive: Easy to copy with rsync, rclone, etc.
- Deduplication: Each run creates a new version; only new data takes up space.
- Verifiable: Fully hashed, allowing you to test integrity anytime. Encryption is optional.
Project pages: https://github.com/fcorbelli/zpaqfranz
https://sourceforge.net/projects/zpaqfranz/
The key element (on standard vzdump) is the deduplicator, aka can save multiple files just like snapshots.
Quick Installation
You need version 65.17 or later.
Here for example https://github.com/fcorbelli/zpaqfranz/releases
Built for any recent Debian/PVE (tested on PVE 9.2), with something like:
Code:
wget https://github.com/fcorbelli/zpaqfranz/releases/latest/download/zpaqfranz_oracle79 -O /usr/local/bin/zpaqfranz
chmod +x /usr/local/bin/zpaqfranz
zpaqfranz autotest
Two Backup Approaches
1. proxvzdump (The "Universal" Way)
It runs vzdump and archives the stream WITH DEDUPLICATION
- Pros: Works with virtually any storage supported by vzdump; safe and conservative.
- Cons: Reads the whole guest every time; standard vzdump streams are never 100% byte-identical, so a no-change run still consumes a little space (MBs).
How?
Code:
mkdir -p /backup
zpaqfranz proxvzdump /backup 100 # Single guest (VM/CT), one in each file
zpaqfranz proxvzdump /backup -all -not 300 # All guests except ID 300
zpaqfranz proxvzdump /backup/all.zpaq -all # All guests in one deduped file
zpaqfranz proxvzdump /backup -all -key mypassword # Encrypted
2. zfsproxbackup (The "Targeted" Way)
No vzdump: takes a storage snapshot and reads the disks directly
- Pros: Unchanged data costs KB instead of MB; container rootfs stored file-by-file (allows single-file restores); disks/files can be extracted independently of Proxmox.
- Cons: Limited to tested storages (ZFS, LVM-thin, btrfs, folders); unsupported storages are rejected. Without a guest agent, running VMs are backed up crash-consistent.
Code:
zpaqfranz zfsproxbackup /backup 100 # VM on local-zfs (snapshot + clone, running)
zpaqfranz zfsproxbackup /backup 200 # Container on local-zfs (file-by-file, running)
zpaqfranz zfsproxbackup /backup 103 # VM/CT on LVM-thin or btrfs
zpaqfranz zfsproxbackup /backup -all # Whole node (skips unsupported automatically)
Checking & Restoring
Check integrity and list versions:
Code:
zpaqfranz t /backup/proxvzdump-qemu-100.zpaq
zpaqfranz i /backup/proxvzdump-qemu-100.zpaq
Extract a single file from a container backup:
Code:
zpaqfranz x /backup/zfsproxbackup-lxc-200.zpaq lxc-200/rootfs/etc/hostname -to /tmp/out/
Restores: Please do not test restores on critical data. If you test proxvzrestore or zfsproxrestore, always target a new VM ID without -force. Restoring directly to ZFS streams (zfsreceive) is currently recommended only for very experienced admins on test nodes.
Where Your Help is Most Needed
Real-world scenarios are invaluable:
- Clusters, PVE 7/8, Ceph (RBD/CephFS), NFS, CIFS, iSCSI, ZFS-over-iSCSI...
- Encrypted ZFS datasets, UEFI/TPM disks...
- Heavy-load VMs with guest agents active...
- Containers with mount points/bind mounts...
What to Report (Here or on GitHub)
If something goes wrong (or even if it just works!), sharing these details helps immensely:
Code:
pveversion
zpaqfranz | head -1
# Storage type, VM/CT, running status, approx size
# Exact command used
echo $? # (0 OK, 1 warning, 2 error)
# Last 20 lines of output & archive size growth
Issues: https://github.com/fcorbelli/zpaqfranz/issues
---
Thank you very much for reading, and a heartfelt thanks to anyone willing to test this out.
Your setups make all the difference, and a special thanks to the Proxmox team and community for an incredible platform!
Kind regards,
Franco
PS And yes, there is a (kind of) '80 console too
Code:
zpaqfranz work proxmox mygood.proxmox.server