Skip to main content

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

The full documentation can be found here

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)

Source distribution for b4-backup 1.4.0
File Size Uploaded
b4_backup-1.4.0.tar.gz 24.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for b4-backup 1.4.0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

1.4.0 This release

2 release files

1.3.6

2 release files

1.3.5

2 release files

1.3.4

2 release files

1.3.3

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.0

2 release files

0.2.0

2 release files

0.1.4

2 release files

0.1.3

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page