Hey there,
a few months ago I found incus and incusOS and moved nearly all parts of my homelab to incusOS. So far, I am really happy with this step, because incus is in some ways a lot easier than my previous proxmox setup. But I am missing the Proxmox-Backup server and the ability to just copy my zfs-data between different host, with zfs send and receive.
So I started to create my own little utility to tackle that problem. One thing I would like to make clear right away is that this tool is in no way comparable to a Proxmox backup server or similar solutions.
Last year, I spent more time learning about Golang, and I thought it would be nice to try to create this tools in go. Additionally, incusOS-parts and the incus API are written in go, too; which makes it very easy incorporate this.
I am posting this here, because of two reasons. First of all, I hope/think that there are some other homelabbers, which are searching for a backup solution for incus(OS) as well. And secondly, I hope I can get feedback and/or suggestions for improvement.
Now to incusAutobackup (IAB), which is inspired by zfs_autobackup, which I used before. It uses a two server setup, the source and the target server. Under the hood it just uses the incus API to perform any actions on the hosts.
The backup loop is:
- Create a snapshot of a volume/instance
- Copy the snapshot to a separate incus(OS) server
- Prune old snapshots based on provided retention policies
IAB works stateless, which means that only things are changed when IAB is execute. It only touches snapshots which are created by IAB itself. It is controlled by one config.json file and I run it on a incus container on my backup host, with a systemd-timer.
A hopefully comprehensive description of IAB can be found in the README.md on github.
There are still a few problems to solve, like the one that currently the source and the target server have to have the same history of snapshots (post on discuss).
I’m curious to see if there are others who could use something like IAB.