Can you help me understand kopia?

Hi to all,

I’m coming from UrBackup and I would like to switch to kopia as my backup solution, but, I’m really confused about it.

First some context, I have 3 PCs (one of them with two operating systems on it) on my home network and a NAS/HomeServer.

With UrBackup I had a client on each machine specifying the local folders to be backed up and, on the HomeServer, I had a UrBackup server instance in a docker container that “pinged” every PC and collect the data to be backed up at specific times of the day.

Now my confusion with kopia:

I know how to create a kopia server in a docker container, but it looks like the “server” needs a “data” folder where it will look at the data to back up and a repository folder where it will save the snapshots and do not present any way to “ask if any PC have local data to be backed up”.

It looks, to me, that in order to back up the files of all my PCs, they should first copy their files into the data folder the server is looking at and then the server will create the snapshot(s). I don’t know, it looks very cumbersome and very different from the way, for example, UrBackup works.

I think I’m missing some crucial piece of the puzzle, can someone clear the fog (of war) for me?

Basically, you will be installing a Kopia server on your NAS/HomeServer which then will be able to receive the client’s data. Also, you will need to install Kopia on each of your clients you want to back up. In fact, each Kopia binary can act as a Kopia server, but that’s for another discussion.

Setup the docker/Kopia and configure the repo, which will be locally to the docker container. Then set up the clients and configure the client access on the Kopia server. Connect your Kopia clients to your Kopia server and set up the paths, that you wish to back up.

Kopia is push not pull, so the Kopia clients will perform their snapshots actively.

This is not necessary. You only need ssh access for root to the client. Then you can mount the clients directory to the server:

mount -t sshfs root@client:/path/to/backup /tmp/tempdir

then you use the –-override-source option to get the meta data straight:

kopia snapshot create --override-source=root@client:/path/to/backup /tmp/tempdir

Eventually you can use –-tags to add more metadata to the snapshot.

I find this much more convenient than installing software on each client.

Well… sure, you can do that. I’d bet that running a Kopia client on the remote end will be much faster, especially when it comes to lots of files. Also, the local Kopia client will perform the heavy lifting when it comes to hashing and chunking, though - sending only the data over the net, that needs to be updated in the repo.

That is the main difference in my setup. I want to have “pull”. The server pulls the backup form the clients. And the clients are macs and various linux distros.

May be a “push” with a kopia client is faster, but my use case does not allow for that. I do not want to install and maintain kopia software on all the clients.

Then you have to DYI your own solution where server has to have access to client’s disks. mount or sftp seem to be the most obvious choices.

Well… either way, you will have to make sure, the software on the client gets updated - if only for security reasons. Push vs. pull doesn’t really free you of that obligation. Kopia is rather low maintenance and as long as the repo format doesn’t change, you can go a long time with a Kopia client, which got installed on the remote client.

Having the local filesystems exposed - by whatever protocol - to the server seems a too hight risk for me. Just my 2c, though.

1 Like