B4, Btrfs Backups But Better
B4 is another tool for creating incremental backups using btrfs subvolumes.
✨ Features
It comes with the following features:
- Backup remote systems or subvolumes
- Backup subvolumes inside subvolumes recursively
- Restore snapshots by replacing or copying them side by side
- Apply rules which subvolumes to keep and how to restore them
- Apply rules how long to keep the backups and at which density.
⚡️ Requirements
- Python 3.12 or higher
- A btrfs partition on the machine you want to backup and your backup destination.
- btrfs-progs
🚀 Getting Started
Take a look at the installation guide to get started. Once installed, you might take a look at the example use cases to get a starting point.
Example
This is just an example to explain the most important features. More examples can be found here
Let's say we want to backup a server with a nextcloud instance on it. The btrfs subvolume we want to backup is /opt/nextcloud. This is where we store all nextcloud-related data.
backup_targets:
# This is just a name, we want to give our target
nextcloud.example.com:
# The location which we want to backup
source: ssh://root@nextcloud.example.com/opt/nextcloud
# The location where we want to store the backups.
# A local path means, that the backups are stored on the same machine as b4.
destination: /opt/backups
# In order to be able to send snapshots incrementally, we need to have at least one parent snapshot on source side.
# Here we can define how many snapshots we want to keep for which amount of time.
src_retention:
auto: # You can create multiple rulesets, to be able to handle manual snapshots differently than automatic ones.
all: "3" # Keep only 3 snapshots on source side
manual:
all: "7days" # Keep all snapshots for 7 days on a manual backup
# The same applies to the destination side.
dst_retention:
auto:
1day: 1month # Keep daily snapshots for 1 month
1week: 1year # After that remove as many snapshots to only weekly snapshots remain, which are kept fpr a year
1month: forever # After a year keep snapshots at a monthly interval forever
timezone: utc
# While using the CLI, these are the targets which are used by default.
default_targets:
- nextcloud.example.com
To actually create a backup, you can use the following command:
b4 backup
Documentation
Metadata
Release files for b4-backup 1.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| b4_backup-1.4.0.tar.gz | 24.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| b4_backup-1.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 53.4 kB
Release files / b4_backup-1.4.0.tar.gz
| Download URL | b4_backup-1.4.0.tar.gz |
|---|---|
| Size | 24.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
400078b824d14dfb1176fda6c67d5cbe9571a08a725b1fe30df606a5918feb2b
|
|
BLAKE2b-256 checksum How to use checksums |
49c2c8a1a2d33c8aefc8082b335f81484a59a6eafb7f51f4fbd09f4568b1e48b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/5.1.1 CPython/3.12.11
|
Release files / b4_backup-1.4.0-py3-none-any.whl
| Download URL | b4_backup-1.4.0-py3-none-any.whl |
|---|---|
| Size | 29.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
84f2ba17fc09af184ceb3153fd9c10221677cc12d5584662ef6ed3c7706f03e7
|
|
BLAKE2b-256 checksum How to use checksums |
0115b160380a4a61cf84f37e71af061ded8708a85b7bb8631bf50314279bab6c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/5.1.1 CPython/3.12.11
|