Releases, borgit manual page, borgem manual page

Write your Borg backup jobs with sourced bash configuration files


  [-s|--archive-suffix archiveSuffix]
  configurationFile [configurationFile...]
borgit --help
borgit --version

Run a single Borg backup job according to the given command line options and configuration files

  [-r|--repo-config repoConfigurationFile]
  [-s|--archive-suffix archiveSuffix]
  jobConfigurationFile [jobConfigurationFile...]
borgem --help
borgem --version

Same-repository multi-job frontend for borgit


Basically, you write separate bash configuration files containing

Then, you use borgem to run the job(s) against any of the repositories.

As a fringe benefit you get to have further manual repository operations at your fingertips, by sourcing a repository configuration file and then operating on the repository like this:

source repos/system-online
borg list "$repo"
borg delete "$repo::etc.2019-11-02"
borg prune -y 10 -m 12 -w 50 -d 35 "$repo"


Task: Backing up

to a remote, already existing "system-online" Borg repository, into archives "etc.yyyy-MM-dd" and "ftp-server.yyyy-MM-dd".

Configuration files, and passphrase text file:


Command, executed from working directory "/root/borg":

borgem --repo-config repos/system-online -- jobs/*

The output might look like this:

 INFO  (borgem) Repository configuration file(s): "repos/system-online"
 INFO  (borgem) Borg archive suffix: ".2019-11-16"
 INFO  (borgem) Running 2 backup job(s)
 INFO  Backing up Borg archive prefix "etc"
 INFO  Backing up 1 path(s) to "backup-user@backup-system:/data/backups/borg/my-system::etc.2019-11-16"
 INFO  Backing up Borg archive prefix "ftp-server"
 INFO  Stopping "proftpd.service"
 INFO  Backing up 2 path(s) to "backup-user@backup-system:/data/backups/borg/my-system::ftp-server.2019-11-16"
 INFO  Starting "proftpd.service"
 INFO  (borgem) All backup jobs have been run without errors

Repository configuration "repos/system-online"

export BORG_PASSCOMMAND="cat \"${BASH_SOURCE[0]}.passphrase\""

Job configuration "jobs/etc"

archivePrefix="$(basename "${BASH_SOURCE[0]}")"
paths+=( "/etc" )

Job configuration "jobs/ftp-server"

archivePrefix="$(basename "${BASH_SOURCE[0]}")"
paths+=( "/etc/proftpd.conf" )
paths+=( "/data/ftp/share" )
borgCreate+=( --exclude "pp:/data/ftp/share/bind-mount" )
services+=( proftpd.service )

See also


GNU General Public License version 3


Browseable sources

These source files of the latest tag can be viewed in the browser:



11 December 2019 (2019-12-11 19:20:35 UTC)

borgit-0.0.4.tar.gz SHA256 checksum SHA384 checksum PGP signature


08 December 2019 (2019-12-08 18:13:54 UTC)

borgit-0.0.3.tar.gz SHA256 checksum SHA384 checksum PGP signature


06 December 2019 (2019-12-06 22:45:07 UTC)

borgit-0.0.2.tar.gz SHA256 checksum SHA384 checksum PGP signature


16 November 2019 (2019-11-16 16:39:51 UTC)

borgit-0.0.1.tar.gz SHA256 checksum SHA384 checksum PGP signature