A macOS system tray wrapper around [Restic](https://restic.net/), the Go-powered cmd-line backup tool.
With Restictray, you can monitor and trigger backups from the system tray:
Restictray is designed in such a way that it checks whether or not a backup is needed every hour by looking at the latest date in the `restic snapshot` output that's also part of the menu. If the backup command fails, the SFTP network goes down, or your laptop is offline, it will resume next time it's booted.
It's also possible to trigger a backup manually.
For convenience, browsing backups in Finder is done through `restic mount`, which means you will need to **install MacFUSE 4.x** through https://osxfuse.github.io/ for it to work!
This was designed for my wife to access backups with a button press.
Restictray currently expects the following files in `~/.restic/`:
1. `password.txt` as hardcoded `--password-file` argument
2. `excludes.txt` as hardcoded `--exclude-file` argument
3. `config.json` that configures the repository, the folder(s)/file(s) to backup, and the interval in hours:
Where `repository` is the restic `-r` argument and `backup` the folder(s)/file(s) fed into the `backup` command.
**The repository should already be initialized!** You'll have to do this yourself using `restic -r [repo] init`.
If `backupTimeInHours` is absent, it will default to **24**: backup once a day.
For more information on how the restic arguments themselves work, please see the restic docs at https://restic.readthedocs.io/en/stable/.
### Dev config
If environment variable `RESTICTRAY_DEV` is set, Restictray configures Zerolog to use stdout and the prettyprint formatter instead of the external log, plus it relies on the `restic` command in `$PATH` instead of looking for it in the currently executing folder.
Restictray can be wrapped as a macOS `.app` folder that can be distributed. See `build.sh` on how to do this---I've used `fyne package`: see docs at https://developer.fyne.io/started/packaging.
The app also wraps the `restic` binary so no local install is needed.
Please note that the current supplied one in `build/` is an ARM64 macOS-specific binary for that very reason.
Restictray uses Lumberjack and Zerolog to log info to `~/.restic/log.txt`. If a command fails, it should be logged there.