If you follow my blog, you may know that I recently migrated to Proxmox as my hypervisor, and I absolutely love it. My Proxmox server runs on a custom-built PC with an i9-10900K, 128GB RAM, and 3 x 1TB SSDs. I’m not using anything fancy, just a good number of VMs spread across two of the SSDs.
In this post, we’ll go through the process of setting up Proxmox Backup Server and backing up all the VMs from my Proxmox server to this backup server.
As always, if you find this post helpful, press the ‘clap’ button. It means a lot to me and helps me know you enjoy this type of content.

Why Proxmox Backup Server?
I’ve been running Proxmox for a few months without any backups. I did create some snapshots inside Proxmox in case I messed up a VM, so I could roll back if needed. But this was all manual. What happens if my host machine fails or a VM gets corrupted and I don’t have a snapshot?
This is where Proxmox Backup Server (PBS) comes in. It’s a dedicated backup solution for Proxmox, allowing you to take automated and deduplicated backups of your VMs and containers. Instead of relying on snapshots, PBS ensures you have full backups stored separately, making recovery easy when needed.
Proxmox Backup Server (PBS) works by running on a separate machine where it stores backups from your Proxmox server. You don’t need powerful hardware, even 8GB RAM is more than enough. Proxmox recommends installing PBS bare metal for better performance, but you can also run it as a VM if needed. Once PBS is set up, you simply add it as a datastore in Proxmox, and that’s it. From there, you can schedule backups and restore VMs whenever needed.
Initial Setup
Initially, I considered getting a mini PC and a NAS, adding the NAS to PBS as an NFS store. However, due to budget constraints, I dropped the idea of the NAS for now.

Instead, I picked up a used Dell OptiPlex 7060 Mini PC for £95, which came with an i5-8500T, 16GB RAM, and a 256GB NVMe. I also bought a 2TB SSD from Amazon, which is more than enough for my needs at the moment.
To set up PBS, I downloaded the Proxmox Backup Server ISO, flashed it to a USB drive using BalenaEtcher, and installed it on the Mini PC. The entire installation process took around 10 minutes.

Storage / Disks
If I navigate to Storage → Disks, I can see my two disks - the 256GB NVMe, where PBS is installed, and the new 2TB SSD, which I’ll use to store all my backups.

From here, I went to Directory, created a new directory, and selected the 2TB disk. For the file system, I chose ext4. Finally, I named the directory backup-01. This is where all my backups will be stored.

User Account
When adding PBS to Proxmox VE, you’ll need to provide login credentials of the PBS. While you can use the root account, I recommend creating a separate user account specifically for backups as a best practice.
I created a new user on PBS and assigned it the necessary permissions to manage the datastore we created earlier. As shown below, I added the pbs-user@pbs account, granted it the DatastoreAdmin role, and set the path to /datastore/backup-01.

Adding PBS to Proxmox VE
The next step is to add PBS to Proxmox VE. To do this, go to Proxmox VE, select Datacenter, and navigate to Storage > Add > Proxmox Backup Server.

Fill in the required information, including the user account we created earlier. To get the fingerprint, go back to PBS, open the Dashboard, and copy the fingerprint displayed there. Paste the fingerprint into the configuration in Proxmox VE.

For the datastore, enter the same name you used when creating the datastore in PBS, such as backup-01.

Once completed, Proxmox VE will be connected to PBS and ready to use for backups.

Taking the First Backup
To verify that everything is set up correctly, select any VM in Proxmox, navigate to the Backup tab, and ensure you select PBS as the storage. By default, Proxmox usually selects the local disk, so make sure to change it to PBS before clicking Backup Now.

Wait for the backup process to complete. Once done, go to PBS, navigate to Datastore > backup-01 > Content, and you should see the same backup listed there. This confirms that everything is configured correctly and that the backup system is working as expected.
Backup Schedule
To avoid manually backing up each VM, let’s set up a backup schedule. In Proxmox VE, select Datacenter, navigate to Backup, and add a Backup Job. Here, you can customise how often you want the backups to run. While you can schedule backups as frequently as every hour, I’m happy with daily backups at 2 AM.

For the mode, I chose 'Stop', which temporarily shuts down the VM during the backup to ensure data consistency. It’s the safest option for critical VMs but requires a brief downtime. Other modes include 'Snapshot', which allows backups while the VM is running, and 'Suspend', which pauses the VM during the process. I highly recommend reviewing the documentation to understand these modes and choosing the one that best fits your environment.
Additionally, you can select specific VMs for the backup job, but I chose 'All', so any new VMs I spin up in the future will automatically be included in the backup without needing further configuration. This makes managing backups much easier.
Prune and Garbage Collection
Let’s talk about prune and garbage collection (GC). Prune removes old backup snapshots based on your retention rules, and GC deletes the unused data chunks from the datastore that are no longer referenced by any snapshots, freeing up disk space.
For my setup, I’ve configured prune to run every Friday at 5 AM and GC to run every Sunday at 7 AM. My retention policy keeps the last 6 backups, 2 monthly backups, and 2 yearly backups.

During the prune job, PBS checks all the snapshots in the datastore and removes any that exceed these retention limits. For example, it ensures only the most recent 6 backups are retained for regular intervals, keeps 2 backups from each month, and stores 2 yearly backups for long-term retention.
However, even after prune deletes snapshots, the actual data chunks remain on disk until GC runs. When GC runs, it scans the datastore for any orphaned chunks that are no longer referenced by the remaining snapshots and deletes them permanently. This ensures that disk space is reclaimed while adhering to the retention policy.
Restoring a Backup
Let’s see how to restore a VM from a backup. I’m writing this post on 31st January at 22:10, and my backups run daily at 2 AM, so there should be a backup from 31st January at 2 AM. Now, let’s assume I accidentally corrupted the VM and want to restore it to the last known good state. To simulate corruption (a bit silly, I know), I created a file called corrupted inside the VM.
suresh@vm-template-v1:~$ touch corrupted
suresh@vm-template-v1:~$
suresh@vm-template-v1:~$ ls
29th-jan 30th-jan 50-cloud-init.yaml corrupted get-docker.sh
suresh@vm-template-v1:~$ Now that the VM is "corrupted," I’ll restore it. First, I shut down the VM. Then, under the Backup tab in Proxmox VE, I selected pbs-01 as the storage. It displayed two backups - one from 30th January and another from 31st January. I chose the 31st January backup and clicked Restore.

Proxmox gave me a warning that restoring the backup would overwrite the current state of the VM, but that’s fine for this scenario. After a few minutes, the VM was successfully restored.

I logged in to the VM, checked for the corrupted file, and it was gone, confirming that the VM was restored to the last known good state.
suresh@vm-template-v1:~$ ls
29th-jan 30th-jan 50-cloud-init.yaml get-docker.shSo, what happens if my entire Proxmox VE setup is wiped out? Well, I didn’t test this scenario (and I absolutely don’t want to!) because I have several VMs running. However, from what I understand, the process would involve doing a fresh installation of Proxmox VE and then adding PBS as a storage option just like we did earlier. Once PBS is connected, I should be able to access the backups stored there and restore my VMs as needed.
Managing Remotes & Sync
In the context of Proxmox Backup Server, a remote is another PBS instance that you connect to your current PBS. This allows one PBS to communicate with and pull data from another PBS node.
You need a remote if you want to sync backups between two PBS servers. This is useful for off-site backups, redundancy, or simply keeping a copy of your backups in a different physical location or system. By setting up a remote, your main PBS can regularly sync data from another PBS, ensuring you always have a second copy of your VM backups in case something goes wrong with the primary backup server.
I initially wrote this blog post in 2025, but as I'm writing this section, it's now January 2026. I decided to set up another PBS node, just in case, thinking about the worst-case scenario. I have a Ugreen NAS, so I created a VM inside it and installed a fresh PBS instance running version 4.1.0. My original PBS is still running version 3.3.0.


You can set up the second PBS (which I named pbs-02) the same way we configured the first one, including the Data Store. Once that’s done, the plan is to configure pbs-02 to pull backups from pbs-01, so it acts as a secondary copy of all my backups. PBS supports both push and pull sync methods.
- In a pull setup, the second PBS (pbs-02) connects to the first one (pbs-01) and pulls backups into its datastore.
- In a push setup, the first PBS pushes backups to the second PBS.
In my case, I’m using the pull method, so pbs-02 will regularly sync and store a copy of all backups from pbs-01. For this to work, I first created a user account on pbs-01 and assigned it the DatastoreReader role. This gives pbs-02 permission to access and read the backups stored on pbs-01.

Next, on pbs-02, I went to the Remotes section and added a new remote pointing to pbs-01. This allows pbs-02 to connect to pbs-01 securely and pull the data.

Once the remote was added, I navigated to the datastore on pbs-02, created a new sync job, and selected pbs-01 as the Source Remote and its datastore as the Source Datastore. This sync job will manage pulling the backups from pbs-01 into pbs-02.

You can also set up the prune and garbage collection jobs, as we explained in the previous section.

Restoring from pbs-02
Now let’s simulate a complete failure scenario. Let's say I lost both my Proxmox VE server and pbs-01 entirely. All I have left is pbs-02, which had been syncing backups from pbs-01.
To test this, I set up a completely fresh Proxmox VE server from scratch and added pbs-02 as a storage option, just like we did earlier in the post. I was hoping I'd be able to see all the backups that were previously synced from pbs-01.

And as I love to expect, everything worked. I could see all the backups stored on pbs-02. Let's try and restore a VM called 'ghost-01'. I created a file on the VM called pbs-test, just to check if it survives the restore on a new Proxmox VE server.

After restoring the VM from pbs-02, I tried to start it, but it failed to boot. At first, this looked bad, but the issue turned out to be simple. The VM still had the CD/DVD drive mounted from the old Proxmox VE setup, and that ISO no longer exists on the new server.

Once I removed the CD/DVD device from the VM hardware, I was able to start it without any issues. I logged in via SSH and confirmed that the pbs-test file was there, meaning the backup and restore worked perfectly.
Last login: Sun Jan 18 15:36:15 2026 from 10.10.0.180
suresh@ghost-01:~$ ls
pbs-testReferences
https://artofinfra.com/journey-and-tribulations-proxmox/




