Skip to content

Instantly share code, notes, and snippets.

@andrewfraley
Last active April 18, 2025 05:23
Show Gist options
  • Save andrewfraley/faa03abc70b7f2b1bd8ec95dc962ba5d to your computer and use it in GitHub Desktop.
Save andrewfraley/faa03abc70b7f2b1bd8ec95dc962ba5d to your computer and use it in GitHub Desktop.
Backup a Raspberry Pi to Proxmox Backup Server using the Proxmox Backup Client

Backup a Raspberry Pi to Proxmox Backup Server using the Proxmox Backup Client

This works on a Pi 4, and should work on a Pi 3, but to work on a Pi Zero you would have to figure out how to compile your own client. More info in this thread on the Proxmox forums.

Determine if your Pi is 32bit or 64bit

Run the following command. If you get arm64, it's 64bit, otherwise you'll see armv7l which is 32bit.

uname -m

Download a custom compiled version of the PBS client

Check for the latest release here. Then wget the PBS client, depending on if you need 32bit or 64bit.

wget https://github.com/ayufan/pve-backup-server-dockerfiles/releases/download/v1.1.9/proxmox-backup-client-v1.1.9-arm32v7.tgz

Extract the archive and move it to /usr/local/bin or wherever you'd like:

tar xvfz proxmox-backup-client-v1.1.9-arm32v7.tgz
mv proxmox-backup-client-v1.1.9 /usr/local/bin/pbs_client

Create a new script to do your backups at /usr/local/bin/pbs_backup.sh See the docs for more info on authentication:

#!/bin/bash

export PBS_REPOSITORY=pbs_client@[email protected]:mydatastore
export PBS_PASSWORD=mypassword
export PBS_FINGERPRINT="02:39:10:2d:23:59:5a:29:13:95:43:ad:d9:e7:d2:13:e5:f7:3e:fd:10:2e:38:9b:12:a3:1e:9e:4a:32:de:23"

apt clean cache
cd /usr/local/bin/pbs_backup
./proxmox-backup-client.sh backup root.pxar:/

Setup a cron job to do daily backups

Create /etc/cron.d/pbs_backup with:

# Run every day at 00:05
5 0 * * * root /usr/local/bin/pbs_backup.sh
@scyto
Copy link

scyto commented Apr 18, 2025

Thanks for this guide! Works perfectly for me.

I created an API access token and used that instead of having the raw password in the script. For anyone looking to do the same, it's located under Access Control in PBS. You need to create the API Token as well as the permissions to apply to the token.

Indeed i just came back to how to use pbsclient and found that 3 years ago that's what i did, was a little confused why it didn't work error 16, and then realized I had the v1 32 bit client installed on the pi, which was upgraded to 64 bit sometime in the last couple of years! changed client to lext 3.x 64bit and the script from 3 years ago still worked.

now to play with --change-detection-mode=metadata to speed it up and --include-dev /boot given on a pi how much we do there to configure the system....

--edit sometime later--
wow change detection mode is neat, made my second backup after adding it to the script 42s insead of 550s! (because so little had changed) this is my script showing me using the token for pam i created called pizave01

#!/bin/bash

export PBS_REPOSITORY=root@[email protected]:syn01.mydomain.com
export PBS_PASSWORD=redacted
export PBS_FINGERPRINT="dead:beef:dead:beef:dead:beef:dead:beef:dead:beef:dead:beef:dead:beef:dead:beef:dead:beef:"

apt clean cache
cd /usr/local/bin/pbs_client
./proxmox-backup-client.sh backup root.pxar:/ --include-dev /boot --change-detection-mode=metadata

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment