rattail-manual/docs/backup/features/rsync.rst
2021-10-31 21:18:04 -05:00

96 lines
2.5 KiB
ReStructuredText

.. highlight:: ini
=======
Rsync
=======
Rattail can invoke the ``rsync`` command to copy relevant portions of
the file system to another location.
The main disadvantage to rsync is that the "backup" is competely
replaced every time the command runs. So you always have just one
"most recent" backup.
Doing so is almost certainly better than nothing, but Borg is really a
superior solution in every way it seems. You are encouraged to use
that instead.
Configuration
=============
You can enable the rsync feature like so::
[rattail.backup]
rsync = true
The rsync feature is *disabled* by default but you can make that
explicit::
[rattail.backup]
rsync = false
By default Rattail will run ``rsync`` before it runs ``borg create``,
but you can reverse that sequence if you need to::
[rattail.backup]
rsync.last = true
Destination
-----------
Rattail only supports a single "destination" for rsync. This can be
either a "local" path, e.g. a backup drive mounted to the main
filesystem, or can be a remote path accessible via SSH.
Here is what a "local" path would look like, e.g. if we want rsync to
write files in the ``/mnt/mydrive/server-backup`` folder::
[rattail.backup]
rsync.remote_prefix = /mnt/mydrive/server-backup
And if we instead wanted rsync to write to the ``/srv/server-backup``
folder on the ``otherserver`` remote machine::
[rattail.backup]
rsync.remote_host = otherserver
rsync.remote_prefix = /srv/server-backup
.. _rsync-include-exclude:
Files to Backup
---------------
Rattail will by default only include certain folders in the rsync run,
and avoid things like the ``/tmp`` folder etc. You can override this
as needed, but here is the default list of what it includes::
[rattail.backup]
rsync.include =
/etc
/home
/opt
/root
/srv
/usr/local
/var
Rattail will also exclude some things by default; again override as
needed but here is that default list. Note that the convention used
is to specify trailing slash for folders, and not for files. These
values are passed directly to the ``rsync`` command so ultimately it
will be interpreting them::
[rattail.backup]
rsync.exclude =
/var/cache/
Note that it is only necessary to *exclude* things which fall "within"
folders which are *included* ..e.g. no reason to explicitly exclude
the ``/tmp`` folder since it wasn't included. But since ``/var`` is
included we must exclude ``/var/cache`` or else it would be backed up
along with the rest.