Name | butter-backup JSON |
Version |
3.5.2
JSON |
| download |
home_page | None |
Summary | Vollverschlüsselte, pseudoinkrementelle Sicherungskopien leicht gemacht |
upload_time | 2025-07-09 20:47:52 |
maintainer | None |
docs_url | None |
author | Max Görner |
requires_python | <4.0.0,>=3.10 |
license | GPL-3.0-or-later |
keywords |
|
VCS |
 |
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
[](https://github.com/psf/black)
[](https://pycqa.github.io/isort/)
[](http://mypy-lang.org/)
[](http://www.gnu.org/licenses/gpl-3.0)
<img src="logo.png" alt="ButterBackup-Logo" height="150px" align="right">
# ButterBackup - Backups so geschmeidig wie Butter!
**Inkrementelle Vollbackups dank BtrFS**
## Installation
uv build
pipx install dist/butter-backup-<version>.whl
## Benutzung
[](https://asciinema.org/a/HTFzRxEWw8ltCoP6NDNo6tITP)
## Gefährdungsszenario
ButterBackup wurde entworfen, um gegen eine Reihe spezieller
Gefährdungsszenarien zu schützen. Die konkreten Bedrohungen und die
entsprechenden Gegenmaßnahmen gibt die folgende Tabelle an. Auf die
Übersichtstabelle folgt eine etwas ausführlichere Diskussion der Maßnahmen.
| Bedrohung | Gegenmaßnahme |
| -------------------------------------------------- | ------------------------------------ |
| Dateien verschlüsselnde Schadsoftware | physikalisch getrennte Aufbewahrung |
| fehlerhafte Sicherungskopien durch Fehlbenutzung | sehr einfache Benutzung |
| Verlust des Datenträgers | Vollverschlüsselung des Datenträgers |
| Zerstörung des Datenträgers durch Spannungsspitzen | physikalisch getrennte Aufbewahrung |
| zu seltene Sicherungskopien | sehr einfache Benutzung |
Diese Bedrohungen werden dadurch reduziert, dass eine sehr einfache Benutzung
die physikalisch getrennte Aufbewahrung des die Sicherungskopien enthaltenen
Datenträgers ermöglicht.
Eine einfach umzusetzende und verlässliche Maßnahme, um den Datenträger
vor Zerstörung durch Spannungsspitzen zu schützen, ist, ihn vom Computer
physikalisch getrennt aufzubewahren. Gleichzeitig schützt diese Maßnahme
auch sehr gut vor der Zerstörung der Sicherungskopien durch Schadsoftware, da
sich die Sicherungskopien außerhalb des Zugriffs der Schadsoftware befinden.
Durch die physikalisch getrennte Aufbewahrung ergibt sich aber eine Bedrohung
durch Bequemlichkeit. Ein Prozess, für dessen Durchführung manuelle
Schritte nötig sind, ist fehleranfällig und läuft Gefahr, im Zweifel
nicht ausgeführt zu werden. Das Anlegen von Sicherungskopien stellt hier
keine Ausnahme dar.
ButterBackup begegnet dieser Gefahr dadurch, dass es das Anlegen einer
Sicherungskopie auf zwei manuelle Schritte reduziert. Es genügt, die
Festplatte mit dem Computer zu verbinden und das Programm zu starten. Alle
weiteren Schritte, z.B. Entschlüsselung, Kopie der Daten und Unmounten,
werden von ButterBackup übernommen.
Insgesamt ermöglicht ButterBackup, Sicherungskopien so sicher wie möglich
aufzubewahren ohne dabei zu verkomplizieren, neue Sicherungskopien anzulegen.
## Ausführung der Tests
ButterBackup hat eine umfangreiche Testsuite, die viele relevanten Aspekte des
Programms abdeckt. Diese wird ergänzt durch die ähnlich umfangreichen
Testsuites der Abhängigkeiten `storage-device-managers` und `shell-interface`.
Diese beiden Abhängigkeiten sind aus ButterBackup hervorgegangen, womit deren
Testsuite weitere für ButterBackup wichtige Aspekte gründlich abdeckt.
Für die schnelle Ausführung während der Entwicklung bietet es sich an, die
Testsuite direkt auszuführen. Dies ist wird im Abschnitt "schnell" erläutert.
Spätestens vor einem Release sollten aber auch die distributionsübergreifenden
Tests ausgeführt werden, da diese garantieren, dass ButterBackup auch unter
Arch und allen unterstützten Pythonversionen funktioniert.
### Schnell
#### Direkt
uv run ruff check .
uv run mypy .
uv run pytest
#### Mittels Makefile
make check-format check-linters run-undockered-tests
### Plattformübergreifende Tests
Es existiert eine umfassende Testsuite, die auch gewisse
Plattformabhängigkeiten erkennen kann. Die Docker-Tests existieren überhaupt
nur, weil es Probleme mit Arch gab.
Die Testsuite kann mittels `make` ausgeführt werden. Es ist auch eine
Parallelisierung mittels `make -j N` möglich, wobei N die Anzahl der Prozesse
angibt.
Diese Tests werden ergänzt durch eine Testmatrix auf Github. Diese Testmatrix
deckt Ubuntu mit allen unterstützten Pythonversionen ab. Dies erlaubt ggf., die
sehr lang laufende Docker-Testsuite seltener auszuführen.
## Designentscheidungen
### Beibehaltung von nicht mehr vermerkten Zielordnern und -dateien
In den Konfigurationen müssen Zielordner und Dateien angegeben werden. Nun ist
es denkbar, dass einige dieser Ziele umbenannt oder entfernt werden. Als
Beispiel diene hier das Backup des Ordners `Videos-Quelle` nach `Videos-Ziel`.
Ein Nutzer könnte sich nun entscheiden, aus Platzgründen `Videos-Quelle` auf
eine externe Festplatte auszulagern. Die Backup-Anweisung könnte damit entfernt
werden.
In diesem Fall wird ButterBackup `Videos-Ziel` nicht löschen. Der
offensichtlichste Grund ist, dass dies das Programm verkomplizieren würde. Es
ist ohne weiteres möglich, über `butter-backup open` die Sicherungskopien zu
öffnen und nicht mehr benötigte Ordner händisch zu löschen.
Außerdem ist es vorstellbar, dass die Quelle zwar gelöscht wurde, aber im
Backup archiviert werden soll. Dieser Anwendungsfall würde unmöglich gemacht,
würden nicht mehr gelistete Ziele aus der Sicherungskopie entfernt.
## Ausstehende Aufgaben
- README schreiben und übersetzen
- Testsuite umstellen von Docker auf virtuelle Maschinen
- Alias für Einzelkonfigurationen?
- butter-backup exec / run
- nimmt Befehl als Zeichenkette und führt diesen im BackupRootDir aus
- butter-backup exec [<uuid>] <cmd> --> open; cd; cmd; cd -; close
- sollte Mapping auf Umgebungsvariablen unterstützen, z.B. RepoPassCmd -> RESTIC_PASSWORD_COMMAND
- Verbesserte Fehlermeldungen
- wenn unmount nicht möglich ist
- wenn BackupRepository nicht vorhanden ist
- SudoPassCmd
- Konfiguration der gewünschten Kompression ermöglichen (zlib, zstd, none, etc.)
Raw data
{
"_id": null,
"home_page": null,
"name": "butter-backup",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0.0,>=3.10",
"maintainer_email": null,
"keywords": null,
"author": "Max G\u00f6rner",
"author_email": "max@familie-goerner.eu",
"download_url": "https://files.pythonhosted.org/packages/eb/96/412440cdebbf38404c1c4b64c07c4951783d7025b8146eea78825aaafac3/butter_backup-3.5.2.tar.gz",
"platform": null,
"description": "[](https://github.com/psf/black)\n[](https://pycqa.github.io/isort/)\n[](http://mypy-lang.org/)\n[](http://www.gnu.org/licenses/gpl-3.0)\n\n<img src=\"logo.png\" alt=\"ButterBackup-Logo\" height=\"150px\" align=\"right\">\n\n# ButterBackup - Backups so geschmeidig wie Butter!\n\n**Inkrementelle Vollbackups dank BtrFS**\n\n## Installation\n\n uv build\n pipx install dist/butter-backup-<version>.whl\n\n## Benutzung\n\n[](https://asciinema.org/a/HTFzRxEWw8ltCoP6NDNo6tITP)\n\n## Gef\u00e4hrdungsszenario\n\nButterBackup wurde entworfen, um gegen eine Reihe spezieller\nGef\u00e4hrdungsszenarien zu sch\u00fctzen. Die konkreten Bedrohungen und die\nentsprechenden Gegenma\u00dfnahmen gibt die folgende Tabelle an. Auf die\n\u00dcbersichtstabelle folgt eine etwas ausf\u00fchrlichere Diskussion der Ma\u00dfnahmen.\n\n| Bedrohung | Gegenma\u00dfnahme |\n| -------------------------------------------------- | ------------------------------------ |\n| Dateien verschl\u00fcsselnde Schadsoftware | physikalisch getrennte Aufbewahrung |\n| fehlerhafte Sicherungskopien durch Fehlbenutzung | sehr einfache Benutzung |\n| Verlust des Datentr\u00e4gers | Vollverschl\u00fcsselung des Datentr\u00e4gers |\n| Zerst\u00f6rung des Datentr\u00e4gers durch Spannungsspitzen | physikalisch getrennte Aufbewahrung |\n| zu seltene Sicherungskopien | sehr einfache Benutzung |\n\nDiese Bedrohungen werden dadurch reduziert, dass eine sehr einfache Benutzung\ndie physikalisch getrennte Aufbewahrung des die Sicherungskopien enthaltenen\nDatentr\u00e4gers erm\u00f6glicht.\n\nEine einfach umzusetzende und verl\u00e4ssliche Ma\u00dfnahme, um den Datentr\u00e4ger\nvor Zerst\u00f6rung durch Spannungsspitzen zu sch\u00fctzen, ist, ihn vom Computer\nphysikalisch getrennt aufzubewahren. Gleichzeitig sch\u00fctzt diese Ma\u00dfnahme\nauch sehr gut vor der Zerst\u00f6rung der Sicherungskopien durch Schadsoftware, da\nsich die Sicherungskopien au\u00dferhalb des Zugriffs der Schadsoftware befinden.\n\nDurch die physikalisch getrennte Aufbewahrung ergibt sich aber eine Bedrohung\ndurch Bequemlichkeit. Ein Prozess, f\u00fcr dessen Durchf\u00fchrung manuelle\nSchritte n\u00f6tig sind, ist fehleranf\u00e4llig und l\u00e4uft Gefahr, im Zweifel\nnicht ausgef\u00fchrt zu werden. Das Anlegen von Sicherungskopien stellt hier\nkeine Ausnahme dar.\n\nButterBackup begegnet dieser Gefahr dadurch, dass es das Anlegen einer\nSicherungskopie auf zwei manuelle Schritte reduziert. Es gen\u00fcgt, die\nFestplatte mit dem Computer zu verbinden und das Programm zu starten. Alle\nweiteren Schritte, z.B. Entschl\u00fcsselung, Kopie der Daten und Unmounten,\nwerden von ButterBackup \u00fcbernommen.\n\nInsgesamt erm\u00f6glicht ButterBackup, Sicherungskopien so sicher wie m\u00f6glich\naufzubewahren ohne dabei zu verkomplizieren, neue Sicherungskopien anzulegen.\n\n## Ausf\u00fchrung der Tests\n\nButterBackup hat eine umfangreiche Testsuite, die viele relevanten Aspekte des\nProgramms abdeckt. Diese wird erg\u00e4nzt durch die \u00e4hnlich umfangreichen\nTestsuites der Abh\u00e4ngigkeiten `storage-device-managers` und `shell-interface`.\nDiese beiden Abh\u00e4ngigkeiten sind aus ButterBackup hervorgegangen, womit deren\nTestsuite weitere f\u00fcr ButterBackup wichtige Aspekte gr\u00fcndlich abdeckt.\n\nF\u00fcr die schnelle Ausf\u00fchrung w\u00e4hrend der Entwicklung bietet es sich an, die\nTestsuite direkt auszuf\u00fchren. Dies ist wird im Abschnitt \"schnell\" erl\u00e4utert.\nSp\u00e4testens vor einem Release sollten aber auch die distributions\u00fcbergreifenden\nTests ausgef\u00fchrt werden, da diese garantieren, dass ButterBackup auch unter\nArch und allen unterst\u00fctzten Pythonversionen funktioniert.\n\n\n### Schnell\n\n#### Direkt\n\n uv run ruff check .\n uv run mypy .\n uv run pytest\n\n#### Mittels Makefile\n\n make check-format check-linters run-undockered-tests\n\n### Plattform\u00fcbergreifende Tests\n\nEs existiert eine umfassende Testsuite, die auch gewisse\nPlattformabh\u00e4ngigkeiten erkennen kann. Die Docker-Tests existieren \u00fcberhaupt\nnur, weil es Probleme mit Arch gab.\n\nDie Testsuite kann mittels `make` ausgef\u00fchrt werden. Es ist auch eine\nParallelisierung mittels `make -j N` m\u00f6glich, wobei N die Anzahl der Prozesse\nangibt.\n\nDiese Tests werden erg\u00e4nzt durch eine Testmatrix auf Github. Diese Testmatrix\ndeckt Ubuntu mit allen unterst\u00fctzten Pythonversionen ab. Dies erlaubt ggf., die\nsehr lang laufende Docker-Testsuite seltener auszuf\u00fchren.\n\n## Designentscheidungen\n\n### Beibehaltung von nicht mehr vermerkten Zielordnern und -dateien\n\nIn den Konfigurationen m\u00fcssen Zielordner und Dateien angegeben werden. Nun ist\nes denkbar, dass einige dieser Ziele umbenannt oder entfernt werden. Als\nBeispiel diene hier das Backup des Ordners `Videos-Quelle` nach `Videos-Ziel`.\nEin Nutzer k\u00f6nnte sich nun entscheiden, aus Platzgr\u00fcnden `Videos-Quelle` auf\neine externe Festplatte auszulagern. Die Backup-Anweisung k\u00f6nnte damit entfernt\nwerden.\n\nIn diesem Fall wird ButterBackup `Videos-Ziel` nicht l\u00f6schen. Der\noffensichtlichste Grund ist, dass dies das Programm verkomplizieren w\u00fcrde. Es\nist ohne weiteres m\u00f6glich, \u00fcber `butter-backup open` die Sicherungskopien zu\n\u00f6ffnen und nicht mehr ben\u00f6tigte Ordner h\u00e4ndisch zu l\u00f6schen.\n\nAu\u00dferdem ist es vorstellbar, dass die Quelle zwar gel\u00f6scht wurde, aber im\nBackup archiviert werden soll. Dieser Anwendungsfall w\u00fcrde unm\u00f6glich gemacht,\nw\u00fcrden nicht mehr gelistete Ziele aus der Sicherungskopie entfernt.\n\n## Ausstehende Aufgaben\n\n- README schreiben und \u00fcbersetzen\n- Testsuite umstellen von Docker auf virtuelle Maschinen\n- Alias f\u00fcr Einzelkonfigurationen?\n- butter-backup exec / run\n - nimmt Befehl als Zeichenkette und f\u00fchrt diesen im BackupRootDir aus\n - butter-backup exec [<uuid>] <cmd> --> open; cd; cmd; cd -; close\n - sollte Mapping auf Umgebungsvariablen unterst\u00fctzen, z.B. RepoPassCmd -> RESTIC_PASSWORD_COMMAND\n- Verbesserte Fehlermeldungen\n - wenn unmount nicht m\u00f6glich ist\n - wenn BackupRepository nicht vorhanden ist\n- SudoPassCmd\n- Konfiguration der gew\u00fcnschten Kompression erm\u00f6glichen (zlib, zstd, none, etc.)\n\n",
"bugtrack_url": null,
"license": "GPL-3.0-or-later",
"summary": "Vollverschl\u00fcsselte, pseudoinkrementelle Sicherungskopien leicht gemacht",
"version": "3.5.2",
"project_urls": {
"Changelog": "https://github.com/MaxG87/ButterBackup/blob/main/CHANGELOG.md",
"Homepage": "https://github.com/MaxG87/ButterBackup",
"Issues": "https://github.com/MaxG87/ButterBackup/issues",
"Repository": "https://github.com/MaxG87/ButterBackup"
},
"split_keywords": [],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "c2257a16e77d792088d646ec317b652550b4509199eed421e3a13cd526265197",
"md5": "ce28c78a61a2a5817f8721c6aa045612",
"sha256": "74e44e89581ed3043bd2e8dd6c572656fda6597bb911725f7b152fc07e119611"
},
"downloads": -1,
"filename": "butter_backup-3.5.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "ce28c78a61a2a5817f8721c6aa045612",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0.0,>=3.10",
"size": 24454,
"upload_time": "2025-07-09T20:47:50",
"upload_time_iso_8601": "2025-07-09T20:47:50.684140Z",
"url": "https://files.pythonhosted.org/packages/c2/25/7a16e77d792088d646ec317b652550b4509199eed421e3a13cd526265197/butter_backup-3.5.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "eb96412440cdebbf38404c1c4b64c07c4951783d7025b8146eea78825aaafac3",
"md5": "e8a1e55498b2e2d28a65003f9da29ee5",
"sha256": "829d0d5073a8dcb32c317c05113733d5b222f3b67c1bec238823b0b25423f52a"
},
"downloads": -1,
"filename": "butter_backup-3.5.2.tar.gz",
"has_sig": false,
"md5_digest": "e8a1e55498b2e2d28a65003f9da29ee5",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0.0,>=3.10",
"size": 24895,
"upload_time": "2025-07-09T20:47:52",
"upload_time_iso_8601": "2025-07-09T20:47:52.120509Z",
"url": "https://files.pythonhosted.org/packages/eb/96/412440cdebbf38404c1c4b64c07c4951783d7025b8146eea78825aaafac3/butter_backup-3.5.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-09 20:47:52",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "MaxG87",
"github_project": "ButterBackup",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "butter-backup"
}