backups with `rsync` and `btrfs` snapshots
Project description
what
performs incremental backups with rsync onto a btrfs filesystem.
finished backups are retained as read-only snapshots.
usage
install
pip install snapshotbackup
pip install snapshotbackup[ci] # install ci related dependencies
pip install snapshotbackup[dev] # install dev dependencies
pip install snapshotbackup[journald] # enable logging to journald with `--silent`
example config.ini
[DEFAULT]
; retain_all = '1 day'
; retain_daily = '1 month'
; decay = '1 year'
[data1]
source = /path/to/data1
backups = /backups/data1
[data2]
source = /path/to/data2
backups = /backups/data2
ignore = /.cache
retain_all = '1 week'
; '1', 'true' or 'True' for `True`, everything else is `False`
autodecay = 1
autoprune = true
actions
the setup-step can be skipped if configured backup directory already exists.
snapshotbackup setup data1
snapshotbackup backup data1
snapshotbackup list data1
snapshotbackup prune data1
snapshotbackup decay data1
retention policy
prune will preserve:
- all backups not older than
retain_all - daily backups not older than
retain_daily - weekly backups forever (see
decay) - the latest backup is always preserved
decay removes all backups older than configured decay.
automatization
when using advanced installation methods and cron make sure PATH is
properly setup, f.e.
PATH=/usr/local/bin:/bin:/usr/bin:/home/foo/.local/bin
01 * * * * DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus snapshotbackup backup home -s
to allow non-interactive deletions configure sudo to allow your user "foo"
to use some btrfs commands without password.
foo ALL=(ALL) NOPASSWD: /usr/bin/btrfs subvolume list *
foo ALL=(ALL) NOPASSWD: /usr/bin/btrfs subvolume delete *
dev env
virtualenv .env -p python3
. .env/bin/activate
pip install -e .[dev] # or pip install -e .[dev,journald]
on zsh you may need to quote:
pip install -e ".[dev]"
demo
if you don't have a btrfs filesystem at hand checkout the demo folder.
it creates a btrfs image file and mounts it as loopback device.
DISCLAIMER: i'm not sure if btrfs loopback files are safe in every environment. use at your own risk.
make -f makefile.demo setup
make -f makefile.demo backup
make -f makefile.demo list
make -f makefile.demo prune
make -f makefile.demo decay
make -f makefile.demo clean
please read makefile.demo and demo/config.ini to understand what's happening.
build
./setup.py bdist_wheel
that's all
not enough documentation? well, erm.., intended audience are developers. that's what you get for hobby projects ;-)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file snapshotbackup-0.0.19.tar.gz.
File metadata
- Download URL: snapshotbackup-0.0.19.tar.gz
- Upload date:
- Size: 26.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4562f8d6b3c936894a2817d3ad727c81ff1bcaad54d101ff73c4ef0bc2ea0286
|
|
| MD5 |
f67c1f048290696c5015186ef1d29161
|
|
| BLAKE2b-256 |
95909183306cc8ec14d211cf062678af60d4a01811ac6820c4268ecea12f2fc7
|
Provenance
The following attestation bundles were made for snapshotbackup-0.0.19.tar.gz:
Publisher:
release.yaml on hbschr/snapshotbackup
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
snapshotbackup-0.0.19.tar.gz -
Subject digest:
4562f8d6b3c936894a2817d3ad727c81ff1bcaad54d101ff73c4ef0bc2ea0286 - Sigstore transparency entry: 871364400
- Sigstore integration time:
-
Permalink:
hbschr/snapshotbackup@b124b0efe8d687261ac667d75e6ecaee45401da8 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/hbschr
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@b124b0efe8d687261ac667d75e6ecaee45401da8 -
Trigger Event:
push
-
Statement type:
File details
Details for the file snapshotbackup-0.0.19-py3-none-any.whl.
File metadata
- Download URL: snapshotbackup-0.0.19-py3-none-any.whl
- Upload date:
- Size: 19.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f061dc6a33d9c41aa79882219f3156b57f2bc8a581afc762656c5e88e1166637
|
|
| MD5 |
fe5944f9b7277058cd5066192967d2b6
|
|
| BLAKE2b-256 |
944ba2bf113558ec250a6d532455f9eaa4be87726fd5d193a90b785403ad951e
|
Provenance
The following attestation bundles were made for snapshotbackup-0.0.19-py3-none-any.whl:
Publisher:
release.yaml on hbschr/snapshotbackup
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
snapshotbackup-0.0.19-py3-none-any.whl -
Subject digest:
f061dc6a33d9c41aa79882219f3156b57f2bc8a581afc762656c5e88e1166637 - Sigstore transparency entry: 871364404
- Sigstore integration time:
-
Permalink:
hbschr/snapshotbackup@b124b0efe8d687261ac667d75e6ecaee45401da8 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/hbschr
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@b124b0efe8d687261ac667d75e6ecaee45401da8 -
Trigger Event:
push
-
Statement type: