backive implementation in Go
  • Go 99.8%
  • Shell 0.2%
Find a file
2026-02-02 17:33:03 +01:00
.github/workflows Fix CI: upgrade Go to 1.25, vendor deps, remove GoReleaser 2026-02-02 10:47:55 +00:00
cmd Migrate to structured logging (slog) and replace panics with error returns 2026-02-02 16:26:27 +00:00
docs Squash merge mmo/ui branch: add Fyne-based system tray UI 2026-02-02 09:26:08 +00:00
systemd Security: harden systemd service unit with sandboxing 2026-02-02 13:13:26 +00:00
test Mocking exec.Cmd.Run() and new tests 2022-01-10 23:03:14 +01:00
udev Add the udev and systemd stubs 2022-01-31 23:33:39 +01:00
ui Migrate to structured logging (slog) and replace panics with error returns 2026-02-02 16:26:27 +00:00
vendor Update all dependencies to latest versions 2026-02-02 12:30:30 +00:00
.gitignore Fix CI: upgrade Go to 1.25, vendor deps, remove GoReleaser 2026-02-02 10:47:55 +00:00
backive-example.yml Squash merge mmo/ui branch: add Fyne-based system tray UI 2026-02-02 09:26:08 +00:00
backive.go Migrate to structured logging (slog) and replace panics with error returns 2026-02-02 16:26:27 +00:00
backive.puml Squash merge mmo/ui branch: add Fyne-based system tray UI 2026-02-02 09:26:08 +00:00
backup.go Migrate to structured logging (slog) and replace panics with error returns 2026-02-02 16:26:27 +00:00
backup_test.go Migrate to structured logging (slog) and replace panics with error returns 2026-02-02 16:26:27 +00:00
config.go Migrate to structured logging (slog) and replace panics with error returns 2026-02-02 16:26:27 +00:00
config_integration_test.go Add integration tests for e2e workflow, database persistence, and config reload 2026-02-02 16:26:27 +00:00
config_test.go Add comprehensive unit tests for config, runs, callbacks, and error paths 2026-02-02 15:10:04 +00:00
database.go Migrate to structured logging (slog) and replace panics with error returns 2026-02-02 16:26:27 +00:00
database_integration_test.go Add integration tests for e2e workflow, database persistence, and config reload 2026-02-02 16:26:27 +00:00
database_test.go Migrate to structured logging (slog) and replace panics with error returns 2026-02-02 16:26:27 +00:00
device.go Migrate to structured logging (slog) and replace panics with error returns 2026-02-02 16:26:27 +00:00
device_test.go Migrate to structured logging (slog) and replace panics with error returns 2026-02-02 16:26:27 +00:00
events.go Migrate to structured logging (slog) and replace panics with error returns 2026-02-02 16:26:27 +00:00
events_test.go Migrate to structured logging (slog) and replace panics with error returns 2026-02-02 16:26:27 +00:00
go.mod Update all dependencies to latest versions 2026-02-02 12:30:30 +00:00
go.sum Update all dependencies to latest versions 2026-02-02 12:30:30 +00:00
integration_test.go Add integration tests for e2e workflow, database persistence, and config reload 2026-02-02 16:26:27 +00:00
LICENSE Initial commit 2021-09-29 21:41:53 +02:00
README.md Update README.md 2022-01-31 22:52:24 +01:00
testbackup.sh Moved socket location. MVP working (no scheduler...) 2022-01-04 16:11:30 +01:00
ui_handler.go Migrate to structured logging (slog) and replace panics with error returns 2026-02-02 16:26:27 +00:00
ui_handler_test.go Add tests for UIHandler 2026-02-02 09:30:20 +00:00
utils.go Add some more tests for coverage 2022-01-31 22:18:21 +01:00
utils_test.go Add some more tests for coverage 2022-01-31 22:18:21 +01:00

backive

The name comes from the combination of backup and archive - silly, I know.

Purpose

I've a long-term backup strategy where I put some labeled hard-disk in a SATA docking station and run a backup routine. When done, this hard-disk goes back into some shelf in my attic or basement. When the time is come again to update the long-term backup the same procedure starts again.

So now there are my backup routines, which are manually currently - and that sucks.

So what this tool or service should do is the following:

  • I am able to configure based on UUIDs of the partitions which devices are allowed for backup
  • I can specify as much backup items as I want, which should include:
    • Backup local and remote data (Linux machine and SSH required)
    • Use the best tool available for the task (rsync, duplicity, whatever)
    • Even be able to "backup" without a target device (choose another path on the system)
    • (optional) Be able to run pre-backup commands (for databases maybe), remote too
  • The service has to be able to automatically detect the presence of a hard-disk, mounting it, running the backup routine and unmounting
  • Good logging about the process

What I currently see as optional:

  • Notification about the finished process

Technical goals

  • systemd service
  • udev rules for notifications about new drives
  • Golang implementation

Current state

Working daemon and udev binary. Ready for first basic usage and testing in "production".