When you restore after a catastrophic failure, do you want to:
- Install a distribution version of the OS onto a blank disk, perform all your configurations and tunings, then restore just the user data? Fundamentally ending up with a new install, just the same user files?
- Install a distribution version of the OS onto a blank disk, the restore your backup, and have all your configurations and tunings of the OS install also ready, but the system has no history (it thinks it was just installed), and port management and updates of the new system may be wonky?
- Like 2, except the system has the history of how it got there, and port management and updates of the new system continue working as if nothing had happened?
- Copy stuff from the backup to a blank disk, boot, and go, and you are fundamentally on the same old system just with a different disk drive?
- Just put the backup disk into a new server, boot, and go?
Let's talk about these levels of goals in order, since 1 is the easiest, and 5 the hardest. My personal goal is somewhere between 1 and 2.
To begin with, I keep a complete log of all administrative actions, in a set of files that are stored in /root (the user "root"'s home directory). I'm organized enough, whenever sudo or su, I type it into my personal log. This makes option 1 pretty easy: Just install a fresh FreeBSD, do the same configuration steps, restore user data, go. For this reason, I back up /root in addition to /home (which contains *all* home directories, none of that /usr/home stuff).
I also back up directories /etc and /usr/local/etc. That would allow me to check that I got all the configurations right: just compare the resulting files with what was backed up.
I *think* (never actually had to try it), if you back up /etc/ and /usr/local/etc and restore them, that option 2 would actually work, if you installed exactly the same OS version, and installed exactly the same ports or packages. It sounds extremely dicey though. There are two problems: First, you have to get exactly the right set of packages installed: having a saved copy of /usr/local/etc/foo.conf doesn't help if the new system doesn't have the foo package installed. Second, there is problems with versions and prerequisites: /usr/local/etc/foo.conf for foo version X may not work well with foo version Y. The feat of these problems is what prevents me from aiming for goal 2 or 3.
There is another problem: If your machine is a server, it may have things spooled, like mail and print jobs that have been spooled and not printed yet. If that's true, you also need to backup /var/mail, /var/spool, and friends. Furthermore, if you want to continue upgrading the restored OS, you need to take care of package management, which requires at least /var/db/pkg, /var/db/ports, /var/db/freebsd-update, and such things. Furthermore, after a restore you might want to see the history of the system before the disk crashed, so you also need /var/log. At this point, you might as well back up all of /var (perhaps skipping known cache and crash dump directories). That might in theory get you to goal 3. Good luck, you'll need it.
I know that goals 4 and 5 are achievable (I know quite a few people who have worked on products that enable this kind of stuff), but I don't know how to do it myself, and I can't be bothered to find out.