Files
simple_backup/README.md
T
Fuxino 4b28cb7edf Update README for 4.3.0
Document the remote output path and that both SSH host and user are required, the paramiko version,
running as root with sudo/doas, and installing from source with pipx instead of pip.
2026-10-13 20:50:03 +02:00

3.7 KiB

simple_backup

A simple backup script

Description

simple_backup is a Python script that allows you to backup your files. Parameters like input files/directories, output directory etc. can be specified in a configuration file, or on the command line. Run:

simple_backup -h

to print all possible command line options.

Dependencies

The script uses rsync to actually run the backup, so you will have to install it on your system. For example on Arch Linux:

sudo pacman -Syu rsync

Optional dependencies are systemd-python to enable using systemd journal for logging, dbus-python for desktop notifications, and paramiko (version 3.2 or later) for remote backup.

Install

For Arch Linux and Arch-based distros, two packages are available in the AUR (aur.archlinux.org):

  • simple_backup for the release version
  • simple_backup-git for the git version

To install it from source, first clone the repository:

git clone https://git.shouldnt.work/fuxino/simple_backup.git

Then build the package (this requires the Python build module, e.g. the python-build package on Arch Linux):

cd simple_backup
python -m build --wheel

Many distributions don't allow installing packages with pip into the system Python ("externally-managed-environment" error). In that case, install the wheel in a virtual environment, for example with pipx:

pipx install dist/*.whl

Optional dependencies can be installed as extras, for example pipx install 'dist/simple_backup-<version>-py3-none-any.whl[REMOTE]' (available extras: JOURNAL, NOTIFICATIONS, REMOTE).

Running as root

To back up files that your user can't read, run simple_backup with sudo or doas. In that case the user who ran the command is detected automatically, so that '~' (in the inputs and in the default configuration file path) refers to that user's home directory, not root's. When running as root in other ways (e.g. from a systemd service), specify the user with the --user (or -u) argument.

Old backups

The number of old backups to keep can be set with the --keep (or -k) argument (or in the configuration file). Old backups are only removed if rsync completes successfully, so that they are not deleted when the new backup may be incomplete. The only rsync error that is ignored is return code 24 (source files vanished during the transfer), which is common when backing up a live system.

Remote backup

Warning

This feature is experimental

It's possible to use a remote server as destination for the backup. Just use the --ssh-user and --ssh-host arguments (or set them in the configuration file). Both are required: if only one of them is set, simple_backup exits with an error. For this to work, rsync must be installed on the server too.

The output directory is a path on the server. A leading '' and relative paths refer to the user's home directory on the server. On the command line, quote '' so that your local shell doesn't expand it:

simple_backup --ssh-host server --ssh-user user -o '~/backups'

Server authentication

The best way to handle the authentication is to have an ssh agent running on your system, otherwise if a passphrase is necessary to unlock the ssh key, it will be necessary to enter it more than once. If needed, it's possible to specify the ssh key location with the --keyfile argument or in the configuration file.

To be able to connect to the user's ssh agent when running simple_backup with sudo, make sure to preserve the SSH_AUTH_SOCK environment variable. For example:

sudo --preserve-env=SSH_AUTH_SOCK -s simple_backup [options]

or by editing the sudoers file. If SSH key authentication is not available, password authentication will be used instead. Check the man page for more details.