Restoring from Backup¶
Rattail tries to make the backup process more convenient, but it does not offer any conveniences for the restore process.
However, it uses “standard” tools to create the backup, and each of those tools essentially provides a way to restore. We’ll briefly outline each and give links to further reading.
Database Dumps¶
If your backup was configured to include database dumps, that means you will have files generated by one or both of:
mysqldump
(MySQL / MariaDB)pg_dump
(PostgreSQL)
By default these files will be in the /root/data
folder on the
server (machine being backed up). However if rsync/borg were used
then copies of these files should be elsewhere as well, e.g. borg
archives.
Each is simply a gzip-ed SQL dump file as generated by the above commands. See their docs for how to restore:
Rsync¶
If your backup was configured to use rsync
, that just means that
some files were copied “as-is” from your server (machine being backed
up) to some target path.
There is no default location for the target path, it will be whatever your config says. Could be either a “local” path on the server, or some remote path accessed via SSH.
Restoring such files is just a matter of copying them from that “target” path, back to wherever you need them to be..
However note that the rsync
method would normally only have the
“most recent” copy of the files, which may not be sufficient for you
to restore from, depending on the nature of the problem. It’s for
this reason that you’re encouraged to use the Borg feature also /
instead.
Borg¶
If your backup involves Borg then that typically means you have one or more target paths, to which Borg archives are written each night. The archives are in fact written to a Borg “repo” which contains multiple archives, older ones being pruned over time to keep only so many around at a time.
And again there may be more than one of these target paths (Borg repos). From the perspective of the server (machine being backed up), there might be a Borg repo on an external disk, another on a local NAS device, another in a cloud server. All of the repos though probably work the same and so you can restore from any the same.
First, the official Borg docs on the matter:
Example Commands¶
For sake of example we’ll show some commands to “mount” a Borg archive, at which point it looks just like another folder in your file system, and you can then copy files as you please.
Let’s assume that the Borg repo lives on an external drive attached to your server. On your server then, we’ll mount one of the archives.
Command Basics¶
Just a reminder here that you’ll need the Borg encryption passphrase
in order to decrypt the Borg repo and actually see “readable” files
etc. (Borg will prompt you for it.) That password should be
somewhere in /srv/envs/backup/app/rattail.conf
on your server.
Also note that all commands shown here are meant to run on your server, but any machine which has Borg installed, could be used for this. You’d likely need to have SSH config in place in order to have basic access to the Borg repo location, and then would of course still need the encryption passphrase.
List Borg Archives¶
Next let’s take a look at which archives are available, again assuming
they’re on an external drive (and assuming myserver
is the name of
your server):
sudo -H borg list /mnt/external/borg-repos/myserver
Note that if your Borg repo lives on another machine, then that command would look more like:
sudo -H borg list borg@cloud.example.com:/path/to/borg-repos/myserver
Mount a Borg Archive¶
Depending on which archives were listed via previous command, you would normally pick the one you wanted, and then “mount” it onto your local file system.
First create a mount point just for this:
sudo mkdir -p /mnt/borg
Then for instance, mount with something like:
sudo -H borg mount /mnt/external/borg-repos/myserver::myserver-2021-12-01T15:38:13 /mnt/borg
And again if your Borg repo lives on another machine:
sudo -H borg mount borg@cloud.example.com:/path/to/borg-repos/myserver::myserver-2021-12-01T15:38:13 /mnt/borg
Once mounted you can access the files just like you would any other mounted network share etc., the one caveat being that only root should have access to the borg mount. For instance:
myuser@myserver:~$ sudo ls -l /mnt/borg
total 0
drwxr-xr-x 1 root root 0 Jun 25 19:31 etc
drwxr-xr-x 1 root root 0 Sep 8 2019 home
drwxr-xr-x 1 root root 0 Sep 8 2019 opt
drwx------ 1 root root 0 Jul 18 2020 root
drwxr-xr-x 1 root root 0 Sep 9 2019 srv
drwxr-xr-x 1 root root 0 Dec 1 21:35 usr
drwxr-xr-x 1 root root 0 Sep 8 2019 var
When you’re finished you should unmount:
sudo -H borg umount /mnt/borg