Data protection is one of the most important responsibilities of any IT administrator. In a virtualized environment like Proxmox VE, backups and restores are critical not just for disaster recovery, but also for migration, testing, and ensuring business continuity.

While Proxmox offers a user-friendly web interface for managing backups, it also provides powerful command-line tools for those who prefer automation and deeper control. In this how-to guide, we’ll cover everything you need to know about creating and restoring backups in Proxmox — both through the GUI and the CLI.


Types of Proxmox Backups

Proxmox supports backups for VMs (QEMU/KVM) and Containers (LXC). These backups are always full backups (not incremental, unless you use Proxmox Backup Server).

Backup Modes

  • Snapshot (Recommended): Uses storage snapshots (if supported). VM/CT runs with minimal downtime.
  • Suspend: Pauses the VM/CT during backup and resumes after completion.
  • Stop: Shuts down the VM/CT completely for a backup. Safest, but maximum downtime.

Backup Storage Options

Backups can be stored on:

  • Local storage (local, local-lvm)
  • NFS/SMB shares
  • External drives
  • Proxmox Backup Server (PBS) for deduplication, encryption, and incremental backups

Backup via Proxmox Web GUI

Step 1: Open the Backup Panel

  • Log into the Proxmox Web GUI.
  • Select the Datacenter, then choose the node where your VM/CT runs.
  • Go to VM → Backup.

Step 2: Start a Manual Backup

  • Click Backup now.
  • Choose the storage target (e.g., local or PBS).
  • Select the mode (snapshot, suspend, stop).
  • Choose the compression method (ZSTD is recommended for speed and efficiency).
  • Click Start.

Step 3: Monitor Progress

You’ll see the backup log in real-time. Once completed, the backup file will be listed in the Backup tab.


Backup via Proxmox CLI

Proxmox uses the vzdump tool for command-line backups.

Example 1: Backup a Single VM

vzdump 101 --mode stop --storage local --compress zstd
root@proxmox:~# vzdump 100 –mode stop –storage local –compress zstd
INFO: starting new backup job: vzdump 100 –storage local –compress zstd –mode stop
INFO: Starting Backup of VM 100 (qemu)
INFO: Backup started at 2025-09-05 15:04:23
INFO: status = running
INFO: backup mode: stop
INFO: ionice priority: 7
INFO: VM Name: azamat
INFO: include disk ‘scsi0’ ‘local-lvm:vm-100-disk-0’ 32G
INFO: stopping virtual guest
INFO: snapshots found (not included into backup)
INFO: creating vzdump archive ‘/var/lib/vz/dump/vzdump-qemu-100-2025_09_05-15_04_23.vma.zst’
INFO: starting kvm to execute backup task
INFO: started backup task ‘f53562f3-be2b-4445-b068-339d7cab4e9d’
INFO: resuming VM again after 15 seconds
INFO: 3% (1.1 GiB of 32.0 GiB) in 3s, read: 387.9 MiB/s, write: 313.1 MiB/s
INFO: 6% (2.1 GiB of 32.0 GiB) in 6s, read: 327.8 MiB/s, write: 295.1 MiB/s
INFO: 7% (2.5 GiB of 32.0 GiB) in 9s, read: 154.3 MiB/s, write: 150.3 MiB/s
INFO: 9% (3.0 GiB of 32.0 GiB) in 12s, read: 154.7 MiB/s, write: 149.1 MiB/s
INFO: 10% (3.4 GiB of 32.0 GiB) in 15s, read: 148.6 MiB/s, write: 144.6 MiB/s
INFO: 12% (3.9 GiB of 32.0 GiB) in 18s, read: 154.4 MiB/s, write: 151.2 MiB/s
INFO: 14% (4.5 GiB of 32.0 GiB) in 21s, read: 202.0 MiB/s, write: 186.7 MiB/s
INFO: 15% (4.9 GiB of 32.0 GiB) in 24s, read: 148.7 MiB/s, write: 141.0 MiB/s
INFO: 23% (7.7 GiB of 32.0 GiB) in 27s, read: 936.5 MiB/s, write: 50.9 MiB/s
INFO: 26% (8.6 GiB of 32.0 GiB) in 30s, read: 333.5 MiB/s, write: 148.5 MiB/s
INFO: 28% (9.1 GiB of 32.0 GiB) in 33s, read: 156.8 MiB/s, write: 152.7 MiB/s
INFO: 29% (9.6 GiB of 32.0 GiB) in 36s, read: 168.3 MiB/s, write: 167.7 MiB/s
INFO: 31% (10.1 GiB of 32.0 GiB) in 39s, read: 157.6 MiB/s, write: 154.2 MiB/s
INFO: 32% (10.5 GiB of 32.0 GiB) in 42s, read: 166.3 MiB/s, write: 159.4 MiB/s
INFO: 34% (11.0 GiB of 32.0 GiB) in 45s, read: 143.8 MiB/s, write: 142.0 MiB/s
INFO: 35% (11.4 GiB of 32.0 GiB) in 48s, read: 145.0 MiB/s, write: 141.2 MiB/s
INFO: 36% (11.8 GiB of 32.0 GiB) in 51s, read: 134.1 MiB/s, write: 133.3 MiB/s
INFO: 38% (12.3 GiB of 32.0 GiB) in 54s, read: 180.0 MiB/s, write: 168.9 MiB/s
INFO: 39% (12.8 GiB of 32.0 GiB) in 57s, read: 155.5 MiB/s, write: 151.4 MiB/s
INFO: 41% (13.4 GiB of 32.0 GiB) in 1m, read: 202.1 MiB/s, write: 184.0 MiB/s
INFO: 43% (13.8 GiB of 32.0 GiB) in 1m 3s, read: 151.0 MiB/s, write: 149.5 MiB/s
INFO: 44% (14.3 GiB of 32.0 GiB) in 1m 6s, read: 172.8 MiB/s, write: 168.3 MiB/s
INFO: 46% (14.7 GiB of 32.0 GiB) in 1m 9s, read: 146.2 MiB/s, write: 145.8 MiB/s
INFO: 47% (15.2 GiB of 32.0 GiB) in 1m 12s, read: 151.0 MiB/s, write: 149.4 MiB/s
INFO: 48% (15.6 GiB of 32.0 GiB) in 1m 15s, read: 158.3 MiB/s, write: 149.7 MiB/s
INFO: 50% (16.1 GiB of 32.0 GiB) in 1m 18s, read: 166.8 MiB/s, write: 152.7 MiB/s
INFO: 51% (16.5 GiB of 32.0 GiB) in 1m 21s, read: 143.5 MiB/s, write: 139.2 MiB/s
INFO: 53% (17.0 GiB of 32.0 GiB) in 1m 24s, read: 157.3 MiB/s, write: 147.7 MiB/s
INFO: 74% (23.7 GiB of 32.0 GiB) in 1m 27s, read: 2.2 GiB/s, write: 298.7 KiB/s
INFO: 97% (31.2 GiB of 32.0 GiB) in 1m 30s, read: 2.5 GiB/s, write: 0 B/s
INFO: 100% (32.0 GiB of 32.0 GiB) in 1m 31s, read: 803.6 MiB/s, write: 8.0 KiB/s
INFO: backup is sparse: 18.85 GiB (58%) total zero data
INFO: transferred 32.00 GiB in 91 seconds (360.1 MiB/s)
INFO: archive file size: 5.37GB
INFO: Finished Backup of VM 100 (00:01:46)
INFO: Backup finished at 2025-09-05 15:06:09
INFO: Backup job finished successfully
INFO: notified via target `mail-to-root`
root@proxmox:/var/lib/vz/dump# ls -lsh
total 5.4G
8.0K -rw-r–r– 1 root root 4.1K Sep 5 15:06 vzdump-qemu-100-2025_09_05-15_04_23.log
5.4G -rw-r–r– 1 root root 5.4G Sep 5 15:06 vzdump-qemu-100-2025_09_05-15_04_23.vma.zst

Example 2: Backup Multiple VMs

vzdump 101 102 103 --storage local-lvm --mode snapshot

Example 3: Backup to a Custom Directory

vzdump 200 --dumpdir /mnt/backups --compress gzip

Backups are stored in /var/lib/vz/dump/ by default (or the storage you select).


Restoring Backups

Restoring is just as important as creating backups. Proxmox has separate commands for VMs and Containers.


Restore via GUI

  1. Navigate to the storage where backups are stored.
  2. Go to the Content tab.
  3. Select the backup file you want to restore.
  4. Click Restore.
  5. Choose:
    • The target node
    • The VMID/CTID (new or existing ID)
    • The target storage
  6. Click Restore and monitor the progress.

Restore via CLI

1. Restore a VM

qmrestore /var/lib/vz/dump/vzdump-qemu-100-2025_09_05-15_04_23.vma.zst 601
  • Restores VM into a new VM with ID 601.
root@proxmox:# qmrestore /var/lib/vz/dump/vzdump-qemu-100-2025_09_05-15_04_23.vma.zst 601
restore vma archive: zstd -q -d -c /var/lib/vz/dump/vzdump-qemu-100-2025_09_05-15_04_23.vma.zst | vma extract -v -r /var/tmp/vzdumptmp2906908.fifo – /var/tmp/vzdumptmp2906908
CFG: size: 437 name: qemu-server.conf
DEV: dev_id=1 size: 34359738368 devname: drive-scsi0
CTIME: Fri Sep 5 15:04:38 2025
WARNING: You have not turned on protection against thin pools running out of space.
WARNING: Set activation/thin_pool_autoextend_threshold below 100 to trigger automatic extension of thin pools before they get full.
Logical volume “vm-601-disk-0” created.
WARNING: Sum of all thin volume sizes (248.36 GiB) exceeds the size of thin pool pve/data and the size of whole volume group (237.47 GiB).
new volume ID is ‘local-lvm:vm-601-disk-0’
map ‘drive-scsi0’ to ‘/dev/pve/vm-601-disk-0’ (write zeros = 0)
progress 1% (read 343605248 bytes, duration 0 sec)
progress 2% (read 687210496 bytes, duration 1 sec)
progress 3% (read 1030815744 bytes, duration 1 sec)
progress 4% (read 1374420992 bytes, duration 4 sec)
progress 5% (read 1718026240 bytes, duration 5 sec)
progress 6% (read 2061631488 bytes, duration 6 sec)
progress 7% (read 2405236736 bytes, duration 7 sec)
progress 8% (read 2748841984 bytes, duration 9 sec)
progress 9% (read 3092381696 bytes, duration 22 sec)
progress 10% (read 3435986944 bytes, duration 25 sec)
progress 11% (read 3779592192 bytes, duration 28 sec)
progress 12% (read 4123197440 bytes, duration 29 sec)
progress 13% (read 4466802688 bytes, duration 32 sec)
progress 14% (read 4810407936 bytes, duration 35 sec)
progress 15% (read 5154013184 bytes, duration 50 sec)
progress 16% (read 5497618432 bytes, duration 53 sec)
progress 17% (read 5841158144 bytes, duration 53 sec)
progress 18% (read 6184763392 bytes, duration 53 sec)
progress 19% (read 6528368640 bytes, duration 53 sec)
progress 20% (read 6871973888 bytes, duration 53 sec)
progress 21% (read 7215579136 bytes, duration 53 sec)
progress 22% (read 7559184384 bytes, duration 53 sec)
progress 23% (read 7902789632 bytes, duration 53 sec)
progress 24% (read 8246394880 bytes, duration 53 sec)
progress 25% (read 8589934592 bytes, duration 53 sec)
progress 26% (read 8933539840 bytes, duration 55 sec)
progress 27% (read 9277145088 bytes, duration 56 sec)
progress 28% (read 9620750336 bytes, duration 59 sec)
progress 29% (read 9964355584 bytes, duration 62 sec)
progress 30% (read 10307960832 bytes, duration 73 sec)
progress 31% (read 10651566080 bytes, duration 75 sec)
progress 32% (read 10995171328 bytes, duration 78 sec)
progress 33% (read 11338776576 bytes, duration 81 sec)
progress 34% (read 11682316288 bytes, duration 94 sec)
progress 35% (read 12025921536 bytes, duration 96 sec)
progress 36% (read 12369526784 bytes, duration 97 sec)
progress 37% (read 12713132032 bytes, duration 100 sec)
progress 38% (read 13056737280 bytes, duration 111 sec)
progress 39% (read 13400342528 bytes, duration 115 sec)
progress 40% (read 13743947776 bytes, duration 116 sec)
progress 41% (read 14087553024 bytes, duration 119 sec)
progress 42% (read 14431092736 bytes, duration 121 sec)
progress 43% (read 14774697984 bytes, duration 133 sec)
progress 44% (read 15118303232 bytes, duration 136 sec)
progress 45% (read 15461908480 bytes, duration 139 sec)
progress 46% (read 15805513728 bytes, duration 143 sec)
progress 47% (read 16149118976 bytes, duration 154 sec)
progress 48% (read 16492724224 bytes, duration 156 sec)
progress 49% (read 16836329472 bytes, duration 158 sec)
progress 50% (read 17179869184 bytes, duration 163 sec)
progress 51% (read 17523474432 bytes, duration 177 sec)
progress 52% (read 17867079680 bytes, duration 180 sec)
progress 53% (read 18210684928 bytes, duration 182 sec)
progress 54% (read 18554290176 bytes, duration 183 sec)
progress 55% (read 18897895424 bytes, duration 183 sec)
progress 56% (read 19241500672 bytes, duration 183 sec)
progress 57% (read 19585105920 bytes, duration 183 sec)
progress 58% (read 19928711168 bytes, duration 183 sec)
progress 59% (read 20272250880 bytes, duration 183 sec)
progress 60% (read 20615856128 bytes, duration 183 sec)
progress 61% (read 20959461376 bytes, duration 183 sec)
progress 62% (read 21303066624 bytes, duration 183 sec)
progress 63% (read 21646671872 bytes, duration 183 sec)
progress 64% (read 21990277120 bytes, duration 183 sec)
progress 65% (read 22333882368 bytes, duration 183 sec)
progress 66% (read 22677487616 bytes, duration 183 sec)
progress 67% (read 23021027328 bytes, duration 183 sec)
progress 68% (read 23364632576 bytes, duration 183 sec)
progress 69% (read 23708237824 bytes, duration 183 sec)
progress 70% (read 24051843072 bytes, duration 183 sec)
progress 71% (read 24395448320 bytes, duration 183 sec)
progress 72% (read 24739053568 bytes, duration 183 sec)
progress 73% (read 25082658816 bytes, duration 183 sec)
progress 74% (read 25426264064 bytes, duration 183 sec)
progress 75% (read 25769803776 bytes, duration 183 sec)
progress 76% (read 26113409024 bytes, duration 183 sec)
progress 77% (read 26457014272 bytes, duration 183 sec)
progress 78% (read 26800619520 bytes, duration 183 sec)
progress 79% (read 27144224768 bytes, duration 183 sec)
progress 80% (read 27487830016 bytes, duration 183 sec)
progress 81% (read 27831435264 bytes, duration 183 sec)
progress 82% (read 28175040512 bytes, duration 183 sec)
progress 83% (read 28518645760 bytes, duration 183 sec)
progress 84% (read 28862185472 bytes, duration 183 sec)
progress 85% (read 29205790720 bytes, duration 183 sec)
progress 86% (read 29549395968 bytes, duration 183 sec)
progress 87% (read 29893001216 bytes, duration 183 sec)
progress 88% (read 30236606464 bytes, duration 183 sec)
progress 89% (read 30580211712 bytes, duration 183 sec)
progress 90% (read 30923816960 bytes, duration 183 sec)
progress 91% (read 31267422208 bytes, duration 183 sec)
progress 92% (read 31610961920 bytes, duration 183 sec)
progress 93% (read 31954567168 bytes, duration 183 sec)
progress 94% (read 32298172416 bytes, duration 183 sec)
progress 95% (read 32641777664 bytes, duration 183 sec)
progress 96% (read 32985382912 bytes, duration 183 sec)
progress 97% (read 33328988160 bytes, duration 183 sec)
progress 98% (read 33672593408 bytes, duration 183 sec)
progress 99% (read 34016198656 bytes, duration 183 sec)
progress 100% (read 34359738368 bytes, duration 183 sec)
total bytes read 34359738368, sparse bytes 20241784832 (58.9%)
space reduction due to 4K zero blocks 1.37%
rescan volumes…

2. Restore a Container

pct restore 202 /var/lib/vz/dump/vzdump-lxc-202-2025_09_01-00_00_00.tar.zst --storage local
  • Restores container 202 on local storage.

Verifying and Managing Backups

  • List backups:
    ls -lh /var/lib/vz/dump/
    
  • Extract VM backups manually:
    vma extract vzdump-qemu-101-2025_09_01-00_00_00.vma.zst /tmp/extract
    
  • Delete old backups to save space:
    rm /var/lib/vz/dump/vzdump-qemu-101-*.vma.zst
    

Automating Backups with Cron

Set up automatic backups to run at scheduled times using cron.

Example: Run daily backups at 2 AM:

0 2 * * * vzdump 101 102 103 --storage local --mode snapshot --compress zstd --quiet 1

For production, you may prefer configuring backup jobs directly in Datacenter → Backup Jobs within the GUI, which integrates with Proxmox’s task scheduler.


Best Practices for Proxmox Backup & Restore

  • Always test restores periodically — a backup is only useful if it can be restored.
  • Use snapshot mode whenever possible (fastest, least downtime).
  • Store backups on separate storage or a remote system (don’t keep them only on the same node).
  • Use Proxmox Backup Server (PBS) for enterprise-grade backups: deduplication, encryption, and incremental snapshots.
  • Automate your backups and monitor logs for failures.

Conclusion

Backups and restores in Proxmox are straightforward once you understand the workflow. Using the GUI, you can quickly create and restore backups with just a few clicks. For power users and automation, the CLI tools (vzdump, qmrestore, and pct restore) give complete control.

By following the steps in this guide and adopting best practices, you’ll ensure that your Proxmox environment remains safe, recoverable, and resilient against unexpected failures.