Backup suite.
Find a file
Bjørn Bäuchle fb04e747e9
All checks were successful
/ linting (push) Successful in 10s
/ make-wheel (push) Successful in 11s
/ make-doc (push) Successful in 6s
Merge pull request 'Use public actions for documentation' (#22) from ci/pages-from-actions into main
Reviewed-on: #22
2026-01-15 14:15:35 +01:00
.forgejo/workflows Use public actions for documentation 2026-01-15 11:49:24 +01:00
doc DOC: Documenting Context, Providers and Testers 2025-10-29 21:30:37 +01:00
docs Document Gitless 2025-12-01 22:38:12 +01:00
sayod FIX flake8 und pylint 2026-01-10 23:16:12 +01:00
.flake8 FIX most findings from flake8 2025-02-22 09:59:38 +01:00
.git_archival.txt NEW RENAME to sayod, make wheel 2024-10-08 21:57:27 +02:00
.gitattributes NEW RENAME to sayod, make wheel 2024-10-08 21:57:27 +02:00
.gitignore Ignore vim swap files 2025-12-01 18:23:08 +01:00
.pylintrc pylint: ignore modules 2026-01-10 23:16:12 +01:00
LICENSE LICENCE: Switch to EUPL-1.2 2025-12-28 07:24:11 +01:00
pyproject.toml fix d1bfce91c3: no 3.8 2025-12-28 09:51:34 +01:00
README.md Add documentation about config files 2025-10-28 17:14:10 +01:00

Sayod /ˈseɪəd/: SAve Your Own Data.

Say It: Backups are good!

sayod is a backup suite written in Python. It mostly uses git and rsync for its tasks and communicates via ssh. It may show notifications with libnotify and interactive prompts with PySide6.

Configuration of backup jobs is done via job resource files which are usually stored in $HOME/.config/sayod/, but can be placed anywhere.

Installation

$ pip install sayod

Usage

sayod's first entrypoint is sayod-backup. Lesser entrypoints are logreader and receiver which are supposed to be called via SSH on a different machine to handle deadtime and notification

# file $HOME/.config/sayod/mytask.rc
[source]
path = /home/myself

[target]
path = /var/my_backups/

[rsync]
deadtime = 7 # weekly backups
$ sayod-backup --config mytask copy
$ # same thing:
$ sayod-backup --config $HOME/.config/sayod/mytask.rc copy