README.md

Wed, 31 Jan 2018 00:06:54 +0000

author
Tuomo Valkonen <tuomov@iki.fi>
date
Wed, 31 Jan 2018 00:06:54 +0000
changeset 97
96d5adbe0205
parent 93
040a0479f51e
child 120
109eaddc16e1
permissions
-rw-r--r--

Pruning support

# Borgend

This is a retrying and queuing scheduler as well as a macOS tray icon for
[BorgBackup](https://borgbackup.readthedocs.io/en/stable/). If you are not
on macOS, no tray icon will be displayed, but you can still use Borgend as a
scheduler.

 * Designed with laptops in mind, Borgend works in “dreamtime”: on macOS the
   scheduler discounts system sleep periods from the backup intervals. If
   you wish, you can also choose “realtime” scheduling.

 * You can have multiple backups to the same repository; for example, you
   may backup a small subset of your files every couple of hours, and
   everything once a day or once a week. Borgend will ensure that only one
   backup is launched at a time, and queue the other one until the
   repository is available.

 * If there was an error, such as when you are offline and backup to a
   remote `ssh` location, Borgend will also retry the backup at set shorter
   intervals.

The lead author is Tuomo Valkonen (<tuomov@iki.fi>).

## Installation

You will need to install the following non-standard Python packages:

 - [keyring](https://pypi.python.org/pypi/keyring) to extract passphrases
   from the keychain
 - [pyyaml](http://pyyaml.org/) for parse configuration files

The use the tray icon on macOS, you will need:

 - [rumps](https://github.com/jaredks/rumps) (Ridiculously Uncomplicated
   macOS Python Statusbar apps)

If you are not on macOS, you will need:

 - [xdg](https://pypi.python.org/pypi/xdg/3.0.0) for configuration file
   location

With the dependencies satisfied, Borgend may be run with

    python3 borgend.py

To permanently authenticate Borgend to use the keychain, and therefore not
have to enter the keychain password every time Borgend is launched, it is
useful to create a standalone Mac app. This can be done with

 - [py2app](https://py2app.readthedocs.io/en/latest/install.html). 

To create the standalone app

    python3 setup.py py2app

The app hould be placed under `dist/`. Copy it to your `Applications`
directory, and set it up to launch on login.


## Usage and configuration

### Configuration file

See the included `config.example.yaml`, which shoud be relatively
self-explanatory. The lists `common_parameters`, `create_parameters`, and
`prune_parameters` are simply Borg command line key–value parameters, passed
to it after expansion of environment variables.

Edit the sample configuration file and copy it to its proper location. On
macOS this should be `~/Library/Application Support/borgend/config.yaml`,
and on other systems this will usually be `~/.config/borgend/config.yaml`.
You can find out the actual location by launching Borgend from the command
line with the `--help` option.

### Passphrases

Passphrases are stored in the OS X Keychain (or whatever the `keyring`
package supports on other systems). In the Borgend configuration file, you
only configure the ‘account’ of the of the password using `keychain_account`
keyword of each backup set. The ‘service’ of the password has to be
`borg-backup`. To add a password into the keychain for the `myrepo`
‘account’, you may use:

    security add-generic-password -a myrepo -s borg-backup -w [PASSWORD]


## License

This software is distributed under an ANTI-ABUSE LICENSE (aka. *f..k
copyright and f..k distributions license*), and without any warranty
whatsoever. If you redistribute this software as part of a larger
collection/distribution/suite of software, you must do either of the
following:

(a) Always redistribute the **unmodified** and **latest** version provided
by the lead author. If the lead author releases a new version (on a specific
branch, such as 'stable' or 'development'), you must promptly make that new
version the default version offered to your users (on that specific branch).

(b) Rename the software, and make it obvious that your modified or obsolete
software is in no way connected to the lead author of the original software.
The users of your version should under no circumstances be under the
illusion hat they can contact the lead author or any of the authors of the
original software if they have any complaints or queries.

Otherwise, do whatever you want with this software. In particular, you may
freely use code snippets in other projects.

mercurial