Off-Site Backup of UniFi Dream Machine Pro
Perhaps you’re asking yourself, what would I do if my Dream Machine Pro died? Aside from the issue of replacing the hardware and having your network down until you do, the UDM-Pro is a UniFi controller, so you’ll need a
.unf file to restore from.
First, make sure you have Auto Backup configured.
Once that’s done, I like to take a simple approach. I’ll create a cron job on the UDM-Pro that runs rsync to copy the files to an instance I have set up for the purpose of housing backups. For me that’s a vm that has an nfs share from my freenas mounted, but a cloud instance would be fine.
Establish an SSH connection to your UDM-Pro.
Establish a shell connection to unifi-os and switch to the home directory while we’ll keep our script.
unifi-os shell cd ~
By default, there won’t be a public key associated with the private key. Let’s generate one.
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
Install vim and rsync. Replace vim with nano if you aren’t familiar with vim.
apt update apt install vim rsync -y
Let’s try run our backup command. Replace
root@unifi-backup with the username and hostname or IP address of your backup instance. Replace
unifi-backup/ with the remote path where you want to rsync the backup files.
rsync -av /data/unifi/data/backup/autobackup/*.unf root@unifi-backup:unifi-backup/
That should have worked. Now let’s automate it.
Make a backup.sh file and make it executable.
touch backup.sh chmod +x backup.sh
Edit the backup script. Replace vim with nano if you aren’t familiar with vim.
It should look a bit like this. Use the command that you previously tested with your replacements.
#!/bin/bash rsync -av /data/unifi/data/backup/autobackup/*.unf root@unifi-backup:unifi-backup/
Make it a cron job.
Add a line to run the backup script. I’m going with hourly. It’s such a small job that it won’t hurt to run it often.
0 * * * * /root/backup.sh
Document the backup location so it’s readily available when you need it.