|
3 months ago | |
---|---|---|
build | 3 months ago | |
cmdtest | 3 months ago | |
img | 3 months ago | |
restic | 3 months ago | |
.gitignore | 3 months ago | |
LICENSE | 3 months ago | |
README.md | 3 months ago | |
TODO.md | 3 months ago | |
build.sh | 3 months ago | |
go.mod | 3 months ago | |
go.sum | 3 months ago | |
icon-big.png | 3 months ago | |
icon.png | 3 months ago | |
main.go | 3 months ago |
README.md
Restictray
A macOS and Linux system tray wrapper around Restic, the Go-powered cmd-line backup tool.
With Restictray, you can monitor and trigger backups from the system tray:
Also tested & working on Linux:
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.
Configuration
Restictray currently expects the following files in ~/.restic/
:
password.txt
as hardcoded--password-file
argument. If not present, creates the file with password "password".excludes.txt
as hardcoded--exclude-file
argument. If not present, creates an empty excludes file.config.json
that configures the repository, the folder(s)/file(s) to backup. If not present, creates these defaults:
{
"repository": "/tmp",
"backup": "/Users/username",
"backupTimeInHours": 24
}
If config.json
exists but the key backupTimeInHours
is absent, it will default to 24: backup once a day.
Where repository
is the restic -r
argument and backup
the folder(s)/file(s) fed into the backup
command. That is, you can use SFTP or S3 or ... as you'd normally do, using for instance sftp:user@server:/somewhere/resticdir
as a repository
value.
The repository should already be initialized! You'll have to do this yourself using restic -r [repo] init
.
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.
Deploying
macOS
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.
Linux
Just go build
and copy the binary to install. On Linux you will need to install Restic yourself using your favorite package manager or via the Restic installation page.
Troubleshooting
Restictray uses Lumberjack and Zerolog to log info to ~/.restic/log.txt
. If a command fails, it should be logged there.