Giter VIP home page Giter VIP logo

locutus's Introduction

Locutus

Introduction

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.

Remotes

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.

Dependencies

You will need a fairly recent version of bash, pwgen, borg and (optionally) rclone.

Setting up

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.

Note on backup security

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.

Usage

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.

locutus.sh create

Creates a backup with the current timestamp according to the configuration, prunes the repository and syncs it to the configured remote storage.

locutus.sh list

Lists backups in your repository.

locutus.sh delete BACKUP_NAME

Deletes the backup named BACKUP_NAME.

locutus.sh list BACKUP_NAME

Lists the contents of a backup in your repository.

locutus.sh info

Displays detailed information about your repository.

locutus.sh info BACKUP_NAME

Displays detailed information about a backup in your repository.

locutus.sh check

Verifies the consistency of your repository and the data stored in it.

locutus.sh prune

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.

locutus.sh sync

Manually synchronizes your repository with the configured remote storage.
Normally this is automatically done by locutus.sh create.

locutus.sh mount MOUNT_POINT

Mounts your repository as a FUSE filesystem to MOUNT_POINT.

locutus.sh export-tar BACKUP_NAME FILE_NAME

Creates a tarball (FILE_NAME) from the specified backup (BACKUP_NAME).

locutus's People

Contributors

janost avatar

Stargazers

 avatar

Watchers

 avatar  avatar

locutus's Issues

Simliar project

I checked to see if I could call my script for driving BorgBackup "locutus" and found your project. (You chose a good name! ๐Ÿ˜‰) I ended up calling mine "queen". Since a user interested in one is likely to be interested in the other, would you like to exchange links? (If you don't want to, that's okay. I've already linked to locutus in my readme, and I won't remove the link.)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.