Update readme

This commit is contained in:
Alexander Wainwright
2025-06-24 15:04:50 +10:00
parent bff6be4560
commit d5884cd899

172
README.md
View File

@@ -1,24 +1,164 @@
locutus
=======
# locutus
A utility wrapper for the venerable borg backup.
*A simple, opinionated wrapper for the venerable **[BorgBackup](https://www.borgbackup.org/)**.*
Usage
-----
## Features
Installation
------------
* **Friendlier CLI:** No need to remember archive names or full repo paths.
* **Index-based archive access:** Refer to backups by index (most recent is 0), or by name.
* **Scriptable:** All commands are suitable for cron or other automation.
* **Transparent:** Directly uses Borg; never hides or obfuscates underlying repo.  Backups can be fully managed by borg directly, made easier by sourcing locutus.rc in your shell.
Requirements
^^^^^^^^^^^^
---
Compatibility
-------------
## Installation
Licence
-------
Requires Python 3.11+, [BorgBackup](https://www.borgbackup.org/) (CLI), and a UNIX-like OS.
Authors
-------
### From source
Clone the repo and install with [uv](https://github.com/astral-sh/uv) or pip:
```sh
git clone https://github.com/figtree-dev/locutus.git
cd locutus
uv tool install .
```
For development/testing:
```sh
uv venv
uv source .venv/bin/activate
uv sync --extra dev
```
(See `pyproject.toml` for dev dependencies.)
---
## Quick Start
### 1. **Setup your backup environment**
```sh
locutus init
```
* Prompts for your repo and passphrase, creates the rc file.
* Edit `~/.config/locutus/locutus.toml` to set your include/exclude/prune rules.
### 2. **Create a backup**
```sh
locutus backup
```
### 3. **List archives**
```sh
locutus list
```
* Archives are in chronological order with reverse indexing, such as `1: ...`, `0: ...`.
### 4. **Mount an archive or the entire repo**
```sh
locutus mount 0 ~/mnt/backup # mount most recent archive
locutus mount ~/mnt/backup # mount all archives
```
### 5. **Restore files from an archive**
```sh
locutus restore 0 ~/restore-dir
```
### 6. **Unmount a mountpoint**
```sh
locutus umount ~/mnt/backup
```
---
## Configuration
* Main config: `~/.config/locutus/locutus.toml` (edit by hand, see sample below)
* Profile/RC: `~/.config/locutus/locutus.rc` (holds BORG\_REPO and BORG\_PASSPHRASE)
**Sample **`locutus.toml`**:**
```toml
[includes]
paths = [
"/etc",
"/home",
"/var/www"
]
[excludes]
paths = [
"*.cache",
"/tmp",
"/home/*/Downloads"
]
[prune]
keep_last = 7
keep_daily = 7
keep_weekly = 4
keep_monthly = 6
[compact]
enabled = true
```
**Sample **`locutus.rc`**:**
```sh
export BORG_REPO="user@host:/path/to/repo"
export BORG_PASSPHRASE="your-strong-password"
```
---
## Development
* Source code: [`src/locutus/`](src/locutus/)
* Tests: [`test/`](test/)
* Run tests:
```sh
uv venv
source .venv/bin/activate
uv sync --extra dev
pytest
```
* All CLI entry points are in `main.py` with subcommands for each workflow.
---
## Limitations / Roadmap
* Linux/UNIX only (uses Borg and fusermount).
* No built-in scheduling (use cron/systemd).
* One config/profile at a time.
---
## License
GPLv3 (see `LICENSE`)
---
## Author
Alexander Wainwright ([code@figtree.dev](mailto:code@figtree.dev))
---
**Pull requests welcome.**
`locutus` was written by `Alexander Wainwright <code@figtree.dev>`_.