Locutus is a wrapper for borg to simplify the backup workflow of a typical home user and provide a secure and easy remote backup solution.
The utility works with a single encrypted borg repository where all configured paths are backed up and synced to a remote cloud storage via rclone
or any other custom tool. With borg's encrypted backup solution and rclone's support for a wide variety of cloud storage providers it's easy to set up a secure, free or relatively cheap way for home users to back up their important data.
Locutus supports any custom command to sync the backup repository to a remote location. Rclone is recommended and works very well. You can find configuration examples for the REPO_SYNC_COMMAND
variable in the .env.template
file for rclone
and aws s3
.
You will need a fairly recent version of bash, pwgen, borg and (optionally) rclone.
Clone the repository, rename .env.template
to .env
and customize the parameters to your needs. You will also need to setup your remote storage in rclone
with rclone config
before using this tool if you're planning to use rclone.
Locutus initializes your backup repository with keyfile-blake2
encryption by default, and generates a random passphrase with pwgen
and saves it to a file specified in the PW_FILE
parameter in the .env
file.
To be able to access data in your repository, you need both the keyfile and the passphrase.
Please make sure to back up your repository key (by exporting it via borg key export
) and your passphrase (saved in PW_FILE, configured in .env
) in a safe and secure place (for example a proper password manager, like KeePassXC or BitWarden) and never share them with anyone. Exposing your repository, key and passphrase means others can access the data in your backup repository. You probably don't want that.
Please make sure to read, understand and customize the .env
file before using Locutus. Locutus will initialize your backup repository the first time you're using it.
Creates a backup with the current timestamp according to the configuration, prunes the repository and syncs it to the configured remote storage.
Lists backups in your repository.
Deletes the backup named BACKUP_NAME.
Lists the contents of a backup in your repository.
Displays detailed information about your repository.
Displays detailed information about a backup in your repository.
Verifies the consistency of your repository and the data stored in it.
Manually executes a prune operation on the repository, removing backups not matching the configured retention options in .env
.
Normally this is automatically done by locutus.sh create
.
Manually synchronizes your repository with the configured remote storage.
Normally this is automatically done by locutus.sh create
.
Mounts your repository as a FUSE filesystem to MOUNT_POINT
.
Creates a tarball (FILE_NAME
) from the specified backup (BACKUP_NAME
).