Routed IPv4 addresses from €0.70/IP per month, no minimum, no contract. See pricing

Back Up the Platform

In the previous guide, you turned the first VM into a reusable template and cloned it in seconds instead of minutes, namely web02, a full working copy with its own identity already fixed. Neither that clone nor the template behind it exists anywhere else yet, so before either one holds anything a customer would miss, you'll first set up Proxmox's own backup system entirely from the panel.

Schedule a Backup Job

Datacenter, Backup in the left tree, opens a job list that starts out completely empty on a fresh node. Add is the only button worth anything yet, and it opens a dialog collecting everything a scheduled backup needs in one place: which guests, which storage, when, and how long to keep what it produces.

Choose What to Back Up and When

The General tab's Guests to Include table lists every VM on the node with a checkbox next to it, the same three VMs from the previous two guides. Checking web02 alone, rather than the template or its unused sibling, keeps this first job focused on the one VM actually worth restoring if something goes wrong.

Proxmox Create Backup Job dialog, General tab, Node -- All --, Storage local, Schedule field showing 02:30, Selection mode Include selected VMs, Compression ZSTD, Mode Snapshot, and the guest table with VM 101 web02 checked, Selected (1)
General tab: web02 checked, a schedule of 02:30, ZSTD compression, Snapshot mode.

Node stays on -- All --, worth leaving alone even on a single-node lab like this one: on a real multi-node cluster it means the job runs wherever each selected guest actually lives that day, rather than failing silently if a VM migrates off the node a job was pinned to. Schedule accepts either a systemd-style calendar expression or, as here, a plain time of day, and Snapshot mode backs up a running VM without pausing it, falling back to a plain file copy automatically once a VM turns out to be stopped, exactly the case for web02 in this lab.

Set a Retention Policy

The Retention tab is where a job stops being just a schedule and starts being an actual policy: left untouched, every single run keeps its own archive forever, filling the target storage one backup at a time.

Proxmox Create Backup Job dialog, Retention tab, Keep all backups unchecked, Keep Last field set to 3, Keep Daily, Keep Weekly, Keep Monthly, and Keep Yearly all empty, with a note reading Without any keep option, the storage's configuration or node's vzdump.conf is used as fallback
Keep Last set to 3: the fourth successful run prunes the oldest of the three still on disk.

Keep Last, Keep Daily, Keep Weekly, Keep Monthly, and Keep Yearly all combine rather than override each other, the same layered retention pattern most backup tools use once a policy needs to survive longer than a handful of recent runs. The note under the fields is worth reading closely: leaving every field blank here does not mean unlimited retention, it means Proxmox falls back to whatever the storage itself or the node's own vzdump.conf already defines, which may keep far less than expected on a node nobody has tuned yet.

Clicking Create submits both tabs as one job, and the same list that started empty now shows exactly what was configured:

Proxmox Datacenter Backup job list, one row: Enabled checked, Node -- All --, Schedule 02:30, Next Run 2026-09-30 01:30:00, Storage local, Retention keep-last=3, Selection 101
The job as Proxmox actually stored it, Next Run already computed from the schedule.

Next Run is a real value, worked out from the schedule the moment the job saves rather than filled in with a placeholder. Schedule Simulator, on that same toolbar, lets a more complex calendar expression be checked against future dates the same way before committing to it.

Run a Backup and Read the Log

Waiting for 02:30 to actually test a brand new job is rarely practical, so Run now, on that same toolbar, triggers the identical job immediately after one confirmation dialog. What it produces is worth reading in full at least once, since every other backup this job ever runs follows exactly the same sequence:

Proxmox Task viewer for VM/CT 101 - Backup, real vzdump log: starting new backup job, Starting Backup of VM 101, status stopped, backup mode stop, VM Name web02, include disk scsi0 local-lvm vm-101-disk-0 16G, creating vzdump archive path, starting kvm to execute backup task, starting backup via QMP command, progress lines from 10 percent to 100 percent with read and write speeds, backup is sparse 14.94 GiB 93 percent total zero data, transferred 16.00 GiB in 25 seconds 655.4 MiB per second, stopping kvm after backup task
A vzdump run against a stopped VM, start to finish.

Does Proxmox actually start the VM just to back it up?

No. starting kvm to execute backup task and stopping kvm after backup task bracket a short-lived helper process instead: a QEMU instance that mounts web02's disk and streams it out over QMP, entirely separate from actually booting Debian inside it. That's also why the log reports backup mode: stop even though Snapshot was the mode selected in the dialog: web02 was already stopped when the job ran, so there was no running guest to snapshot in the first place, and Proxmox falls back to the simpler path automatically rather than failing the job.

The percentage lines in the middle carry real throughput numbers next to each one, a genuine progress readout rather than a fixed animation: climbing from 556.7 MiB/s early on down to 4.4 MiB/s as the read pattern got less sequential near the end. backup is sparse: 14.94 GiB (93%) total zero data is the line that explains the biggest single number in this whole log: out of a nominal 16.0 GiB disk, only 7% of it held anything Proxmox actually needed to copy.

Confirm the Archive and Its Real Size

Every VM's own Backup tab lists what that specific VM's own history of archives actually looks like, independent of which job or which storage produced each one.

Virtual Machine 101 web02, Backup tab, one archive listed: vzdump-qemu-101-2026_09_29-13_36_23.vma.zst, Notes web02, Date 2026-09-29 13:36:23, Format vma.zst, Size 563.53 MB, toolbar buttons Backup now, Restore, Show Configuration, Edit Notes, Change Protection, Remove
The same run from the task log, now a real file: 563.53 MB from a nominal 16 GiB disk.

That 563.53 MB is the sparse detection from the task log and ZSTD compression stacked on top of each other: the 93% that was already zero data cost almost nothing to store, and whatever remained still compressed well past its raw size. A disk this empty is the best case a fresh VM offers, and the number only climbs from here as web02 actually fills up with a real deployment, which is exactly why retention limits from the previous section matter well before that growth becomes a problem.

Run a Backup On Demand

Backup now, on that same VM Backup tab, reaches the identical vzdump machinery as the scheduled job, just without waiting for a schedule or touching every guest a job might otherwise cover.

Proxmox Backup VM 101 (web02) dialog, Storage local, Compression ZSTD, Mode Snapshot, Notification Use global settings, Protected unchecked, Notes field containing the template variable guestname, with a hint listing possible template variables cluster, guestname, node, vmid
The manual path: same Storage and Compression fields, plus a Notes template that explains where "web02" came from in the previous figure.

That Notes field is where the "web02" already visible on the archive in the previous section actually comes from: {{guestname}} is a live template variable, filled in with this VM's own name at backup time, and the hint text beneath the field lists the others available for a more detailed note. Protected, left unchecked here, is worth knowing about before ever needing it: checking it exempts that one archive from every retention rule and from Remove itself, the one setting between an accidental prune and a backup a team actually needs to survive.

Restore From a Backup

Selecting an archive in that same list and clicking Restore opens a dialog whose own title already states the risk plainly:

Proxmox Overwrite Restore: VM 101 (web02) dialog, Source vzdump-qemu-101-2026_09_29-13_36_23.vma.zst, Storage From backup configuration, VM 101, Bandwidth Limit field, Unique and Start after restore and Add to HA checkboxes, Override Settings section with Name web02, Memory 2048, Cores 2, Sockets 1
Overwrite Restore: restoring onto VM ID 101 replaces the VM currently sitting at that ID.

Before clicking Restore on an existing VM ID: make sure that VM's current disk has nothing worth keeping. The dialog's own title says Overwrite Restore for exactly that reason, and there's no separate confirmation step past this one screen.

Restoring onto a different, unused VM ID instead sidesteps that risk entirely, useful for testing whether an archive actually works without touching the live VM it came from. Unique, in that case, regenerates the network MAC address the same way cloning a template already did two guides ago, since two VMs sharing one MAC on the same bridge would collide the moment both came up. Override Settings pre-fills Name, Memory, Cores, and Sockets straight from the backup's own saved configuration, editable here before Restore commits to them, the last checkpoint before this platform's first real disaster-recovery path actually exists.

In summary

  • A scheduled Backup Job combines guest selection, storage, schedule, and retention into one Datacenter-level object.
  • A real backup runs through a short-lived helper process, never the guest OS itself.
  • Sparse-block detection and compression together can shrink a nominal 16 GiB disk down to a few hundred real megabytes.
  • Restoring onto an existing VM ID overwrites it; a different ID plus Unique tests an archive safely instead.

In the next guide, you'll add monitoring and alerting on top of what's now running.