39 lines
1000 B
Markdown
39 lines
1000 B
Markdown
# `btrfs` Backup Solution
|
|
|
|
Encrypted incremental backups utilizing
|
|
[`btrfs send`](https://btrfs.wiki.kernel.org/index.php/Manpage/btrfs-send)
|
|
and [`age`](https://age-encryption.org/).
|
|
|
|
## Setup
|
|
|
|
At `/media/storage/backup`, we have:
|
|
|
|
```
|
|
backup/
|
|
data/ [a btrfs **subvolume** containing the data]
|
|
...
|
|
snapshots/ [btrfs snapshots of the 'data' subvolume]
|
|
repo/ [where encrypted backup files will go]
|
|
|
|
[an age-encryption v1 key for the at-rest passphrase]
|
|
static-passphrase-key
|
|
static-passphrase-key.pub
|
|
|
|
[the contents of this repo:]
|
|
backup.sh
|
|
create-passphrase-file.sh
|
|
```
|
|
|
|
You can generate the `static-passphrase-key` and `static-passphrase-key.pub` with
|
|
`rage-keygen -o static-passphrase-key` and by manually populating the pubkey file.
|
|
|
|
## Requirements
|
|
|
|
**Note:** Make sure that `data` is actually a btrfs subvolume!!
|
|
|
|
- `btrfs`
|
|
- `bash`
|
|
- `zstd`
|
|
- [`rage`](https://github.com/str4d/rage)
|
|
- [`simple-age-encryptor`](https://git.lavender.software/charlotte/simple-age-encryptor)
|