The Lone C++ Coder's Blog

The Lone C++ Coder's Blog

The continued diary of an experienced C++ programmer. Thoughts on C++ and other languages I play with, Emacs, functional, non functional and sometimes non-functioning programming.

Timo Geusch

3-Minute Read

Update 2021-12-18: It looks like the rdiff-backup port has been removed from the FreeBSD ports tree, so installing it via the port is definitely not an option anymore. Also, the method described below works on FreeBSD 13.0 as well.

My main PC workstation (as opposed to my Mac Pro) is a dual-boot Windows and Linux machine. While backing up the Windows portion is relatively easy via some cheap-ish commercial backup software, I ended up backing up my Linux home directories only very occasionally. Clearly, Something Had To Be Done (tm).

I had a look around for Linux backup software. I was familiar with was Timeshift, but at least the Manjaro port can’t back up to a remote machine and was useless as a result. I eventually settled on rdiff-backup as it seemed to be simple, has been around for a while and also looks very cron-friendly. So far, so good.

The main snag I ran into was that rdiff-backup is trying to start its server portion on the destination server via ssh and, well, I didn’t have rdiff-backup installed on my FreeBSD server. My first attempt at using the port did not go well - I suspect this is because the port is out of date. Manjaro provides rdiff-backup 2.0, whereas the FreeBSD port is sitting at 1.2.8. Either way I couldn’t get the two to talk so I ended up uninstalling the port again and installing rdiff-backup on FreeBSD 12.1 using pip.

Assuming you have pip installed - which I didn’t, but it’s also available as a port - the overall installation is relatively simple:

  • Install librsync, which is the main dependency for rdiff-backup
  • The system had python3.8 installed already as dependency of Mercurial, but I also had to install lang/python to get the default symlink and devel/pip so I can actually use pip to install rdiff-backup
  • Do a per-user install of rdiff-backup. As I also had to tell the build script where it would find librsync, the command line looked something like this: env CFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib pip install --user rdiff-backup
  • The CFLAGS/LDFLAGS incantation is necessary as the /usr/local paths weren’t in the standard include paths on my setup.
  • Update the path setting in your remote shell so it picks up the bin directory that the pip user install ended up in - in my case, I had to add $HOME/.local/bin to the path for the default shell. As I use tcsh as my default shell, I needed update the path setting in my .cshrc to include this directory.

Once I went through the changes above and verified that I could manually run ssh -C rdiff-backup –help and got an error message that the –help parameter wasn’t supported.

That’s all it took to get rdiff-backup talking between my Manjaro Linux workstation and the FreeBSD 12.1 home server.

Recent Posts



A developer's journey. Still trying to figure out this software thing after several decades.