Proxmox VM backups

Does anybody use rclone to back up proxmox VMs? If so what does your procedure look like?

I’m not to keen with the upload speeds to Backblaze B2 in this case.

Experiment with increasing --transfers up to the limit of your RAM and speed should increase (assuming the VM files are very large).

Is it safe to upload the vm files directly or should i be scheduling backups inside Proxmox VE and syncing the backup images?

The latter sounds better if you want a consistent VM image.

I’m doing this now. I made changes to the backup parameters so that it calls my script after each backup (manual or automatic) and then syncs the “dump” directory with my Google drive. If you want to keep an indefinite amount of backups, change the “rclone sync” to “rclone copy” in the script. In other words, “sync” will have your Google drive look like the Proxmox dump directory while “copy” will keep every copy until you manually delete it from Google (this allows you to set your automated backups to keep 1 or 2 days of backups knowing that your Google drive will have weeks or months of archives).

File: /root/bin/end-backup.sh (edit the rclone command line to use your config file, name of your cloud drive, and Proxmox dump location)

#!/bin/bash

# /etc/vzdump.conf - default settings can be changed here

COMMAND=${1}

if [[ ${COMMAND} == 'job-end' ]]; then
        rclone --config /root/.config/rclone/rclone.conf --drive-chunk-size=32M sync /var/lib/vz/dump Google:/Backups/dump --exclude '*.log' -v --stats=60s --transfers=16 --checkers=16
fi

Make the file executable:

chmod 700 /root/bin/end-backup.sh

File /etc/vzdump.conf

Uncomment and modify the script line

script: /root/bin/end-backup.sh

The end result here is that whether you manually backup a specific instance or you’re running a scheduled backup of everything, this script will run at the end of all backups and sync (or copy–see above) the new backups to your cloud drive. If you ever have to rebuild Proxmox, simply get rclone working on the new box and run the same sync/copy command manually (reversing the source and destination, obviously) to pull down all your backups for restoration.

Your reply was super helpful, thank you!

One problem… Proxmox has to store the backups locally until they are uploaded via rclone… So this machine has 2TB of space and i am using 1.1TB now. This means i cannot back up all my VMs in one go since i need 1.1TB space to back up the vms.

This means i have to back up VMs one by one :frowning:

So here’s the beauty of the script. It actually gets called many times, not just at the end (that’s why there’s an if statement looking for “job-end”). If we change “job-end” to “backup-end” then the Rclone command is run after EACH instance is backed up. Obviously, you only need to sync/copy that one file and then you’ll want to delete it. Ultimately, the script would then look like this.

#!/bin/bash
# /etc/vzdump.conf - default settings can be changed here

COMMAND=${1}
TYPE=${2}
ACTION=${3}
TAR=${TARFILE}
if [[ ${COMMAND} == 'backup-end' ]]; then
        rclone --config /root/.config/rclone/rclone.conf --drive-chunk-size=32M copy ${TAR} Google:/Backups/ -v --stats=60s
rm ${TAR}
fi