From c5e596a9d5b35453825a8e873140ab90ab6a90d4 Mon Sep 17 00:00:00 2001 From: wgroeneveld Date: Mon, 6 Mar 2023 21:09:27 +0100 Subject: [PATCH] add readme/todo/license, resilience as timeout when e.g. sftp connection fails --- LICENSE | 14 +++++ README.md | 58 +++++++++++++++++ TODO.md | 4 +- cmdtest/timeout.go | 60 ++++++++++++++++++ go.mod | 4 ++ go.sum | 17 +++++ img/restictray-app.jpg | Bin 0 -> 81047 bytes img/restictray.jpg | Bin 0 -> 32306 bytes main.go | 140 ++++++++++++++++++++++++++++------------- restic/wrapper.go | 27 ++++++-- 10 files changed, 272 insertions(+), 52 deletions(-) create mode 100644 LICENSE create mode 100644 README.md create mode 100644 cmdtest/timeout.go create mode 100644 img/restictray-app.jpg create mode 100644 img/restictray.jpg diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..81af97e --- /dev/null +++ b/LICENSE @@ -0,0 +1,14 @@ + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + + Copyright (C) 2004 Sam Hocevar + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. + diff --git a/README.md b/README.md new file mode 100644 index 0000000..610c9ca --- /dev/null +++ b/README.md @@ -0,0 +1,58 @@ + +# Restictray + +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: + +![](img/restictray.jpg) + +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/`: + +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: + +```json +{ + "repository": "sftp:user@server:/somewhere/resticdir", + "backup": "/Users/username", + "backupTimeInHours": 24 +} +``` + +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. + +## Deploying + +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. + +![](img/restictray-app.jpg) + +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. + +## Troubleshooting + +Restictray uses Lumberjack and Zerolog to log info to `~/.restic/log.txt`. If a command fails, it should be logged there. \ No newline at end of file diff --git a/TODO.md b/TODO.md index 28dc127..014834a 100644 --- a/TODO.md +++ b/TODO.md @@ -7,8 +7,8 @@ - [ ] Create default files if not existing? - [ ] Create a config dialog in https://developer.fyne.io/ - [ ] Add additional resilience: - - [ ] What if SSH backup and network goes down? Do a `ping` before backup? Is there a timeout from the `restic` command itself? - - [ ] If something goes wrong, menu shows error and app becomes unusable. Perhaps not all errors (e.g. above one) have to be this way. + - [X] What if SSH backup and network goes down? Do a `ping` before backup? Is there a timeout from the `restic` command itself? + - [X] If something goes wrong, menu shows error and app becomes unusable. Perhaps not all errors (e.g. above one) have to be this way. - [X] Is backing up while mounted ok? => yes - [ ] `restic backup` can result in `Warning: at least one source file could not be read\n: exit status 3`. This returns an error, but the backup itself seems to be all right. - [X] exit code 3: https://restic.readthedocs.io/en/stable/040_backup.html likely to be a permission problem, perhaps ignoring instead of panicking as of now? diff --git a/cmdtest/timeout.go b/cmdtest/timeout.go new file mode 100644 index 0000000..e0e2793 --- /dev/null +++ b/cmdtest/timeout.go @@ -0,0 +1,60 @@ +package main + +import ( + "bufio" + "fmt" + "os/exec" + "time" +) + +func main() { + cmd := neverReturningThing() + //cmd := returningThingWithinThreeSecs() + //cmd := returningThingAfterThreeSecs() + stdout, _ := cmd.StdoutPipe() + + busy := make(chan bool, 1) + cmd.Start() + + scanner := bufio.NewScanner(stdout) + scanner.Split(bufio.ScanLines) + + go func() { + fmt.Println("starting scanner.scan (blocking)") + for scanner.Scan() { + fmt.Println("scanned") + m := scanner.Text() + fmt.Println(m) + if busy != nil { + busy <- true + } + } + }() + + fmt.Println("starting select chans") + var err error + select { + case <-busy: + fmt.Println("busy chan") + busy = nil + case <-time.After(3 * time.Second): + pkill := cmd.Process.Kill() + fmt.Println("timeout triggered? err: %w", pkill) + } + + fmt.Println("starting Wait()") + err = cmd.Wait() + fmt.Printf("done? here's an error: %w", err) +} + +func returningThingWithinThreeSecs() *exec.Cmd { + return exec.Command("echo", "sup") +} + +func returningThingAfterThreeSecs() *exec.Cmd { + return exec.Command("ping", "google.com") +} + +func neverReturningThing() *exec.Cmd { + return exec.Command("ssh", "user@unknown.local") +} diff --git a/go.mod b/go.mod index 9ade12b..75ec6d9 100644 --- a/go.mod +++ b/go.mod @@ -5,13 +5,17 @@ go 1.19 require ( fyne.io/systray v1.10.0 github.com/rs/zerolog v1.29.0 + github.com/stretchr/testify v1.8.2 gopkg.in/natefinch/lumberjack.v2 v2.2.1 ) require ( + github.com/davecgh/go-spew v1.1.1 // indirect github.com/godbus/dbus/v5 v5.0.4 // indirect github.com/mattn/go-colorable v0.1.12 // indirect github.com/mattn/go-isatty v0.0.14 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect github.com/tevino/abool v1.2.0 // indirect golang.org/x/sys v0.6.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 236f77f..acdac01 100644 --- a/go.sum +++ b/go.sum @@ -1,6 +1,9 @@ fyne.io/systray v1.10.0 h1:Yr1D9Lxeiw3+vSuZWPlaHC8BMjIHZXJKkek706AfYQk= fyne.io/systray v1.10.0/go.mod h1:oM2AQqGJ1AMo4nNqZFYU8xYygSBZkW2hmdJ7n4yjedE= github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/godbus/dbus/v5 v5.0.4 h1:9349emZab16e7zQvpmsbtjc18ykshndd8y2PG3sgJbA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= @@ -8,9 +11,18 @@ github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/rs/zerolog v1.29.0 h1:Zes4hju04hjbvkVkOhdl2HpZa+0PmVwigmo8XoORE5w= github.com/rs/zerolog v1.29.0/go.mod h1:NILgTygv/Uej1ra5XxGf82ZFSLk58MFGAUS2o6usyD0= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/tevino/abool v1.2.0 h1:heAkClL8H6w+mK5md9dzsuohKeXHUpY7Vw0ZCKW+huA= github.com/tevino/abool v1.2.0/go.mod h1:qc66Pna1RiIsPa7O4Egxxs9OqkuxDX55zznh9K07Tzg= golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -18,5 +30,10 @@ golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/img/restictray-app.jpg b/img/restictray-app.jpg new file mode 100644 index 0000000000000000000000000000000000000000..74b5931e565926ecaccf7883015de97dedc06a9e GIT binary patch literal 81047 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 z zBwQQOPH}?ZQD)acc4?ZeKoa&403Z+%6B?F%5cMB-A3#FJNsJ&Ml0X!OB2k7WFPx%4 z8kO=nMg1s=aX&1kIG_QUCJ2!}F@h!$i9RTTA_$Qp2$>=g@{2+Rfc*ZS-5Grl#4tqT ze?g~=;`;~9SbB)VCJK=*3Xvj_An!*=>L5g#Bt+Vb@v4HuG6?)PbZy!o-5(I5!^8-R z3?hizI0y-1f9MC0&p3!MAPABKB#Hu=-w_dMf})szkfMPg1|ic2AyRfA{u+$7?QgvP z^G9UBZ;|}Z5fLeIz%zpXXZN|%?}!uZn?RC(Pim6C^Afz~p1$x8UjNFJ`TXBTV;Wb1 z-IBR!fz|W#XWrKkb zn~&Ee@($!bt`~ z{}uy&X1+mG&cQp+Ypj@d$5ND=q1UYKHZ9c6y_zj3HAAnDTFv4 zIT;L*jX*)K=U>7O>3bc6H$`me5STc<%lUk8PmCuFq4rCSh16>10l@dRNRb`ztq@&`&NGfh29zzmHE>#K5I?mghRjoo$24Q^ly(W z5-+yj@MmSpJ(tV?{-E}km^lCMOY;Qr)!GCefwxGTlIzTOvcIJCCl@}j6lm}trTTZi z6KJQvo@;=^PsG1vFND-t9Lf3c?rV(o9RBY0*W)}Y%>@*n$#Vj= zU&8!L_Wl+AFFK|;{(gHFHHW)?jHeu zN$J0$`~$+*FH1wIMDynN0Otz7lA_;=W8a)2`OhMZBk?CGh#0(x#@LZV<@gf<{*$Si z0{fqC!9jUYqdd*UbHQ`@e|AlO6cwdk$yz4k&q)4KkRU+5#A!h=>R)C1pTT}Q&PSP@{z~azOd(a^ zB8cW}kXdc~FUo(z{q>RkFUkJ>{)o)K>ObM9@~HR!jyeBp#ZSoIrpAYY@##d6iUDn|9%e$_Tc^>Te&M)fL2O=BOqeHpW7}@PMkvu53n8Qu1T6)|RB5!`s&LjeZiZ0%?fl=4B#~17ID?3+c zK*vKcKPU*~TZgN@kfMZwsXmNn{CqECvv)JPBb0%$Rw-s$IX_`sn+AJ7>b+~24Qer=@J_ulj6)+wgH}4zSk!S0dod*zn~o`QfYkxL z4s%{OSJhYyxmv>!W*zy5mD%a4>4sF8B)=hAP5nY(Sxlf#KM3On17w{Ou7rk6q%}xZA_FOvJ zWZCOQCPi8g-UlI=s>zGiB?%;Bz|GjSGFyy!(To#lqNYew&I44;+A7D~(?!rQS$lG_ zSu!3!`^w7>QREmHnbayZnJ_SG{dFJzen0~!g;grcJgba{=XUg~R$&Be%`J25KKn%xvOJM$j2p?5;(KGR|88DN~xZ#koM=g0H=_uwuHH66UQVT?!Q>mj=A;pQ+g| zX0jH2aHpFn=UIQ=aIDa(YS;1Re+g6#yxUgldp!+wrdonCn4DkWs{vdd(Oq%Ue0iP~ zZ{t#3*u<*&VjK|&8ec9zWzfRvYRVvNOsU+%t{aE4MySh88>b>O8AzNcmn)+#svAj{ zoQ1_J@f&M}ISb|n&|A_|vX~wi_t2Jp$`BHY>xUS#*Zc}M)(QN(Zs$kQ2=Ow3NYsC9)+&10IcNpH>?Yb2FRT`IY zM@_*Pr~R&}p%wm;T1HrPN+g20-Nq=rp?tChiz*tvIOaCgW7*2m9}@-bk?v??X#MGR zW~o26+v&DL_PxSFZ)AtZIj`dXp%-n}uqeQpc8^)CL`$4yGTQ{#3AqcyJfn_eu0)lm zNl#OMDydi;)QXlvgkDmV-3mbeZLzDEFikBBK4D}}wg%7DSX25CDwIT?Z!Yi_ zBV0R2#gkYYCh!1Y{RaU3f%*l2p?9vpOODCEiu_M8^WD%A3>*NWkohTQei&MsI~O%J zaZaEJ%x71w?>}=2$lLlMW}v@|nR3;1)pU8;Bu7TrRkfk&ZFR;c4D$HMw4BAV<}^t9 z#hj2!)|@k4zC@Gl>nrny_jc`&s|6xkh*JmN+x6hHq)eDM>`i?Ceed$!x5X%H<_Vdi zV3rr(AAl65w{Nw5lAMc+7cF0%6)%dr&~-g~UJ3^^b@D_|!jpg=Mk~8|2q-2@M4Y!9 zsYf;hq=y)<)e^A-s$PV#GKm4!417TI$a3}D8$*vizP7Ku`;`p{bLgSFsTyMFipx^M zC$ZIUV$JR7+hR>=%&_VK%jSb1&U;Po(==}Coy#|vv!U(53jhniDpNC=6jN!07KVfR zlnplGRDlh)b(M~fTom&kfL9}-&O1w1StHCt)NvKv&NUmVNb<-GO}Lhkmqr}S*!Pd~ zfnuaAbP{7R?rVz>1#Hes!AgWdpQRI2V6z2t#G$^2M zY5D^=gzYXa=J|`yJ~M`t&Whxnr5|1*CA*3&;t_d&871j4uXRGp;oA5E;JY&+=*)6j zRo;_@$x%fx`E0_Y$p=|!o2ou*&3hR9_`I9x1C34FOGf^BgVcNXDBUEvw9M&YP4+1= z@w{DHXF9}9-~-o4M!WF^%grp2`=jkhZh9oY8$DlhjI^p*>R1hN;mhuAB5I-BM3@C3 z8Aa1UKh>+1-Ka%uO`~o7`B?nBty{zg;Z`?M94DtbziYoBBzaZ*xty%a&2!VM;Kpm7R-nZPvr)oleZr1pKL38 z_kCtWBmKCsPb)q!Gx#ua7RAquzWpgpfw{WC($yKVuZ=Em4eD+PNt1OZ+WwT@TA640 zqskTt@M(tP!$;fUc;B?%Oh2&vR?B2;VD767Cg_h`X5XgvQKE=;czkYKAyZvhk4ELm zZpO*vGAuH$%laUvYyn>Fo46V55q5^iiQ5EGH=sqN1JT8yqrxYZlUxrN;?D{!1;{9v z>f14z4fB@`*)L)4vg=Nsnk>H@toj_T^8u}~h19go52mU#&mH2yFuEzw=Z)|aZfPel z{q8&T_u&5o!`Afb9*^2v9z$6**<-;GVY2{6pL;TlIacw6z!zAlc(Ne#y~&U+vpo$_ z3!?vM7+i85f44>CcMUapG!v=96rnF2bEZ3BraKXBrnC_NC=tGlI-Gn?*)nDgue%UX zWG81vG@KN_Q}sa=s+NM&o6ElOutlA;cc|g|bCP^cZ31Y>q71S(trd}O!EJHP!7A?F zziAbC!yT{WV!wp&&<_!M%>S@12M_(bbvYH2`ZElOdAWo+<$QM0@5befe~3IN07T@0 z^K@Zyvmsl4tpYDiI%c;v^K`cvmR%yq`r67ANd5poD^Pg#DBWQ{4iR%4$fxaV|t@gIx@*DC&xJVd;ZEJPUxEvoT;+ zq&LssgvSqJd)6Ye#f>vcv9z4mR7A{Pg}j;AMH%b)I?7 z!~ECtK(Hk?mMgw)5JfsU^s`s$pT`jydEe7%I>Bf%8)2O&OJdgFv-f;Lj19XfoC{Pl z?oLn!VjwopCqh-LGlYTG5Md%V0zwPzkp-KPJ=mZ~TjH=}OiG_V%OU=VqXUcA#iNdK zk?dr5%?Eh*-!P`>^v>+L`_(s-ouw%ylm#;|U@Q=1ZqwvK(`ow)%iZ`gvE z#Dab0M?plBFU4CtY=U2yH&=#URqGSSG*m#B76S&-b^jq3q{23D9@GiJfXK!k~m0Z5a_G<2Ot3R=LZ85 z6AI!2U?RXlKW4$2*ue|~NOTLMA$ssploFdDZDN#=?JT25eo;?FJf=mlufY-i=LH_3 z(eq~__v6Xh_H=SwUHgz}HrI6U!?fkhH{8sACzVu@5$UNfEimq{^|ujd3p(ieM{>Xh zB7veBfF<)Rht$Hi8_T4N2)Aa%7mskzd8m~HQBHxS)z7w819F-lq+vdDqpP0t)A#r( zae#W$^{V;_8iQpN6Y$ct@mSZosOz;^YI4X>2}CP(*~M%sV1qIQXT}OEt6m2q-a2|d zy`(`RT1nEHRuE4ZO`_<;B3ehq+!%Ks|FY>=eDt7FU}mSs~|hV7g>i)84XzGtt2WeyCknWIjRv}-Rn|&$z#9xp8Z_>B5KC9pysEFE*L!D@Z(pYgOlEVB0&|2Xt{2~BmBetmzf%4> zgRuCR$XW7bxyt_eaej0k2(QdH1o3&c8=G!dDcy~#IQlc+rI4EkucrJ>c8bGKhc~X9 z=h7zSQ#Z*ga4dyzM1z^8s@dl#mCVQ$$^>dw8)y->fKH9cwm%{ znn{(!Gy4gNeRcR~*G5E2Z(k0=--A)@1BRuoM(CQR7k)mXw8jieoI@$T#;~SkqslqF zU_i~=M@SIbF8XvPK^cql@W`jU)@#4~^c3e|Lo0{_JCHw4TFXObgMNdOlvon;WqbXZ z%BvNyxg%5pL9OD`{(0|YN(A8&e%GM>N;)z&1=}Pu*Svttoeh%zkGZ!DihKLEMH_eb z#vu^gJ-9oKTX1XK1HrX%2n2U`cMnd21$Va~L4y<6ue106?0asVdR6bkeO0%rKm58s zbagM8Ys@jnm}^_^wo`BNsq5iw}Dn+1% z0Z(*`qjZOt74D4;o&EQsv3#a!+3GP7q@O}hcIK~&8~l31b`7OHHn_>gc4l2XaKUMX zevipoy0s)BFieHpga%GqWW#K^)~-6~H?1Z&eVI%VY_uiENSK69@L!fj`$cqX*Q`5~ z8<{09MGT$UhC4nd)?z}=zf5)yU(~%A6Q;<#)7Ed7vUGN$uxic-??+~W6Tg1_t(b+) zuZ)$EyFE6vYZ{j}Ksd4M@O2q~<$E$?1zt;QRLuzr^X=^bxC5+HZvSp4&ll$kQig_oMTHap?NZPYuvYE0$@tt`hYEDEIS)pd;TxG#HeGLU116i;GLTttl ze8xzIY5~dLTFWV)$Yq?)1x!)L0zuF&U9gL1k>B8Z(e0)NGY;`mz8*`bb6shs%*AN` zM2Vxe*G2^_=<7BoD)9wIbTt4zErG5+KGup`I_bT{oUwNyG{_=-JJ<5Qb=rF9kIcS4 z&#tRA$6kjktggDHWGCRGvqVxi?20FbZOofz3!DtUz&&Cb^aEsWEA$fwB*2KRrZ?=S z8(K*09=3)T3sXCgnE7NUwWRSkh0mgl3d&9=fB7yU2Uw zz_3JXAWG7l`E2Txw%Crm)%dFZmBw%2U4|iJ>9!j%DlQ&C+^RJJE~tgw+!H6OOWPxD zqn zkMF>TC*zw1r2L*}kv$#fn=s@#wZH(2M0(;1;n1-jTUtaD-m(bFb}kwqkv`8tHtB>$ zZoD~0!YHrjw25#MqKGiC;T!cDRn*sfBMCo1(~rr@)e<91RWkBkYs_fWEFy}{L!PoR z`I0QL!HwmxuVA5W;{XpF+)=RFl5NrG@5K+rp^HB2-#fpkBhuK!haNi@!&aV%$k7JB zh?=WVGIH{9z-BX9F52Us=v-hFD3E1!fBX4}0>ye~nC)Qg_xSU-A$bhmqMLyc&;#aS zF`4==z({ie)+?6^gSS^g#inSP_fyW^$^W^>_#ZYoDQE9S=PxKVyZu$KZvXFnBp9ga zG5-92`HzGSpO--uMV&$kR^R>lmv_^izkjIBXPSgubObV=8c;C@kM@H@hCqkDdGSX= zukNKMD(wAU>tCW0&LH!=PCROOazET(#l+v!%hO!oo=~Mu%5IN0D)&Y?GB^S;LHB3HVDuksEn@x*Gw*%LQIDE`+TE;$JFe z3HIG&WM49DB$7FO$PKN##lcCfjNE)Iusa+_d)LAwGKFRW7N^EH?L!6ZYhfVj(1cbT z>NE|6Esqm&cv!YOxMjiPWZ?53ayqosvcQYCV!ThUuQ0EE%~M;nmAVwUXWuV8kD2|A z?aAJcp~su_Tbv1@vpbMr+VeG$idiE>z&(iDeFpF3Qi&|>qd%p_x8W@HV&6qb{bhcL z!*yKb!U2N#*jUKfR$B1YPbqm+IGy*aCmv}OrD;%0g1mMo(ul-u;avoXiE+isx@vJ7rKq>9K;f!zEB z__Ut>KsyF)M>*$7pG^Hucm2%7y~TfO;r{>J<6veCl9Pyy-E&UW`G>lW)!rZf*FJ7< zVb|Bbewnh*oe`HAfD|nqT1;L7AB}V0yzQKhZo%DXSep`PKH|V$xB?i~%}bb~|U%2G%-I?H9OQ4r zut@mvL!CC2pG-1gls@($F z9=4NFth;LF8|Fkf9-284({oxSf*fXpSXKRWjvqa!)3@1Zm{v5oMK8^%OKR!Y3t-@N zp+-A10KY*C0SZutC`<5LsLePR&~7IqX-|pkEV){06DhIGCY@U;30AWhSNdyQ!nMbX zbu#q>=5tyKtK0+*=VL%<-Bme=hq~lbxo%2!O-1phHdu1sdPuG%IOf(km3CKCy3Ua% zD4#llPdm~Ks7iqU6<&;wjYXrPf!4OlP`GH8lwxT3rHmoMP9d*xEEi$0L5J+3TF2+D zt5f3vr|q)^2|GCwMSH)N)~!W6*M)>;j2m6XtkBE}8w|{ZWe+8G@OU$cS-K&8JsQ=# zt~u)#;TYm~9xCM(kPj#npP)`&v~|2Ibi$9!MB@nPkNo6ti8`lutFr1KTF_b5^7->` ze=!YPNy@dZ`uB&KOKH6a`=0a3nUM&={;9hv>f|ECTHC)Fnjd3ex;A#6FTot5ZT>me z1;O-tHZfRnUA-l}ayj;t+C8vyNX>dRXoxW)@=+pg5y1~1Xb5a294Xsv)ZR)gJ-jEJ zWF`6W7eJwcvhdd!UKj`oT|%Ow40(*Dsd{9;KuBDIZ=AUHWjt;hC-o=PF)8M>rPz zR~{P*CCGu!4lAot7O&3irxmh@DXR}3-<=z)ZH>Jjs$w1f!3=EtdAi+Ynw4KZrPv!$ zo^AFa*lenUcX#St0wtj*HYNp{6L~hmultz8H?t!Ph8V!5D`Z3o8FTSzvU$SEc7aDB z%rAqQj!NgLCI-us%-#nXJE%m4M_E!wQSaphjO?0TX2%5PnI^+{gSMj-1>{fgf=hSz z*!)vHMPv;gRmV_i^bLv?=JzmSX{jz`UmL(1ya_6$!C}Ca@HLcm$1JL-BYUnze>@h$ zqp+pYV$v5o_=bl10^_pcrMLL+YiQl7g!2!re(+cNh`S{5LG@pW&B<_+`eTM%_Uy

{br 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 literal 0 HcmV?d00001 diff --git a/img/restictray.jpg b/img/restictray.jpg new file mode 100644 index 0000000000000000000000000000000000000000..32d5eb493e97fa4996b0c0c8a2c5eccdb139d940 GIT binary patch literal 32306 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 literal 0 HcmV?d00001 diff --git a/main.go b/main.go index 4391d21..fe534ec 100644 --- a/main.go +++ b/main.go @@ -14,7 +14,7 @@ import ( // I'm ignoring go threading issues here; assume no clicks happen at the same time. var wrapper *restic.Wrapper -func addMenuQuit() { +func addMenuQuit() *systray.MenuItem { mQuit := systray.AddMenuItem("Quit", "Quit Restictray") go func() { <-mQuit.ClickedCh @@ -22,6 +22,7 @@ func addMenuQuit() { wrapper.Cleanup() systray.Quit() }() + return mQuit } func addMenuError(err error) { @@ -62,7 +63,7 @@ func main() { } // Updates snapshot information in restic wrapper and menu labels. This is a blocking call. -func updateSnapshots(cnf *restic.Config, mnuLatest *systray.MenuItem, mnuNext *systray.MenuItem, mnuBackupNow *systray.MenuItem) { +func updateSnapshots(cnf *restic.Config, mnu *resticmenu) { err := wrapper.UpdateLatestSnapshots(cnf) if err != nil { handleError(err) @@ -75,10 +76,9 @@ func updateSnapshots(cnf *restic.Config, mnuLatest *systray.MenuItem, mnuNext *s msg = "⚠️ Overdue - " + msg } - mnuLatest.SetTitle("Latest: " + snapshot.Id + " @ " + snapshot.ShortTime()) - mnuNext.SetTitle(msg) - mnuBackupNow.Enable() - mnuBackupNow.SetTitle("Backup now") + mnu.latestSnapshot.SetTitle("Latest: " + snapshot.Id + " @ " + snapshot.ShortTime()) + mnu.nextSnapshot.SetTitle(msg) + mnu.backupNowSucceeded() } func isBackupNeeded(cnf *restic.Config) bool { @@ -86,6 +86,26 @@ func isBackupNeeded(cnf *restic.Config) bool { return time.Now().After(nextTime) } +type resticmenu struct { + latestSnapshot *systray.MenuItem + nextSnapshot *systray.MenuItem + backupNow *systray.MenuItem + browse *systray.MenuItem + logs *systray.MenuItem + config *systray.MenuItem + quit *systray.MenuItem +} + +func (mnu *resticmenu) backupNowFailed(err error) { + mnu.backupNow.Enable() + mnu.backupNow.SetTitle("‼️ Backup now - latest failed!") +} + +func (mnu *resticmenu) backupNowSucceeded() { + mnu.backupNow.Enable() + mnu.backupNow.SetTitle("Backup now") +} + // See https://github.com/fyne-io/systray/tree/master/example for more examples func onSystrayReady() { systray.SetTemplateIcon(restic.TimeMachineIcon, restic.TimeMachineIcon) @@ -97,51 +117,80 @@ func onSystrayReady() { return } - mnuLatestSnapshot := systray.AddMenuItem("Latest: (Fetching...)", "Latest Restic snapshot") - mnuNextSnapshot := systray.AddMenuItem("Next @ (Unknown)", "Future Restic snapshot") - systray.AddSeparator() - mnuBackupNow := systray.AddMenuItem("Backup now", "Backup now") - mnuBackupNow.Disable() - mnuBrowse := systray.AddMenuItem("Browse backups in Finder...", "Mount and browse backups") - mnuLogs := systray.AddMenuItem("Open logfile...", "Open logging file") - mnuConfig := systray.AddMenuItem("Open config file...", "Open config file") - systray.AddSeparator() - addMenuQuit() + mnu := buildMenu() - go updateSnapshots(cnf, mnuLatestSnapshot, mnuNextSnapshot, mnuBackupNow) + go updateSnapshots(cnf, mnu) backupCheckTime := make(chan bool, 1) - backupCheckFn := func() { + hourlyBackupCheckFn := func() { time.Sleep(1 * time.Hour) backupCheckTime <- true } - go backupCheckFn() + go hourlyBackupCheckFn() for { select { - case <-mnuConfig.ClickedCh: - restic.OpenConfigFile() - case <-mnuLogs.ClickedCh: - restic.OpenLogs() + case <-mnu.config.ClickedCh: + onOpenConfig() + case <-mnu.logs.ClickedCh: + onOpenLogs() case <-backupCheckTime: - if !mnuBackupNow.Disabled() && isBackupNeeded(cnf) { - go backupNow(mnuBackupNow, cnf, func() { - updateSnapshots(cnf, mnuLatestSnapshot, mnuNextSnapshot, mnuBackupNow) - go backupCheckFn() - }) - } else { - log.Info().Msg("Backup not yet needed/in progress/impossible") - go backupCheckFn() - } - case <-mnuBackupNow.ClickedCh: - go backupNow(mnuBackupNow, cnf, func() { - updateSnapshots(cnf, mnuLatestSnapshot, mnuNextSnapshot, mnuBackupNow) - }) - case <-mnuBrowse.ClickedCh: - go mountBackups(cnf) + onBackupCheck(mnu, cnf, hourlyBackupCheckFn) + case <-mnu.backupNow.ClickedCh: + onBackupNow(mnu, cnf) + case <-mnu.browse.ClickedCh: + onBroseBackups(cnf) } } } +func onBroseBackups(cnf *restic.Config) { + go mountBackups(cnf) +} + +func onOpenLogs() error { + return restic.OpenLogs() +} + +func onOpenConfig() error { + return restic.OpenConfigFile() +} + +func onBackupNow(mnu *resticmenu, cnf *restic.Config) { + go backupNow(mnu, cnf, func() { + updateSnapshots(cnf, mnu) + }, mnu.backupNowFailed) +} + +func onBackupCheck(mnu *resticmenu, cnf *restic.Config, hourlyBackupCheckFn func()) { + if !mnu.backupNow.Disabled() && isBackupNeeded(cnf) { + go backupNow(mnu, cnf, func() { + updateSnapshots(cnf, mnu) + go hourlyBackupCheckFn() + }, func(err error) { + mnu.backupNowFailed(err) + go hourlyBackupCheckFn() + }) + } else { + log.Info().Msg("Backup not yet needed/in progress/impossible") + go hourlyBackupCheckFn() + } +} + +func buildMenu() *resticmenu { + mnu := &resticmenu{} + mnu.latestSnapshot = systray.AddMenuItem("Latest: (Fetching...)", "Latest Restic snapshot") + mnu.nextSnapshot = systray.AddMenuItem("Next @ (Unknown)", "Future Restic snapshot") + systray.AddSeparator() + mnu.backupNow = systray.AddMenuItem("Backup now", "Backup now") + mnu.backupNow.Disable() + mnu.browse = systray.AddMenuItem("Browse backups in Finder...", "Mount and browse backups") + mnu.logs = systray.AddMenuItem("Open logfile...", "Open logging file") + mnu.config = systray.AddMenuItem("Open config file...", "Open config file") + systray.AddSeparator() + mnu.quit = addMenuQuit() + return mnu +} + // Allows for browsing inside Restic backups by the "mount" command, using MacFuse internally. This is a NON-blocking call. // Restic allows backing up and consulting snapshots while mounted func mountBackups(cnf *restic.Config) { @@ -152,14 +201,17 @@ func mountBackups(cnf *restic.Config) { } // Disables the menu and triggers a restic backup. This is a blocking call. -func backupNow(mnu *systray.MenuItem, cnf *restic.Config, onDoneFn func()) { +func backupNow(mnu *resticmenu, cnf *restic.Config, onSuccessFn func(), onErrFn func(error)) { log.Debug().Msg("Backup triggered") - mnu.SetTitle("🔄 Backup in progress...") - mnu.Disable() - err := wrapper.Backup(cnf) + mnu.backupNow.SetTitle("🔄 Backup in progress...") + mnu.backupNow.Disable() + err := wrapper.Backup(cnf) if err != nil { - handleError(err) + log.Err(err).Msg("backup error") + onErrFn(err) + return } - onDoneFn() + + onSuccessFn() } diff --git a/restic/wrapper.go b/restic/wrapper.go index 36dcb8d..6fc3248 100644 --- a/restic/wrapper.go +++ b/restic/wrapper.go @@ -144,18 +144,33 @@ func openFolder(folder string) error { // Backup uses "restic backup" to create a new snapshot. This is a blocking call. func (w *Wrapper) Backup(c *Config) error { cmd := resticCmd("--password-file", PasswordFile(), "-r", c.Repository, "--exclude-file", ExcludeFile(), "backup", c.Backup, "--no-scan") - stdout, _ := cmd.StdoutPipe() + + busy := make(chan bool, 1) cmd.Start() scanner := bufio.NewScanner(stdout) scanner.Split(bufio.ScanLines) - for scanner.Scan() { - m := scanner.Text() - log.Info().Str("out", m).Msg("backup") - } - err := cmd.Wait() + go func() { + for scanner.Scan() { + m := scanner.Text() + log.Info().Str("out", m).Msg("backup") + if busy != nil { + busy <- true + } + } + }() + + select { + case <-busy: + busy = nil // It's alive! continue with cmd.Wait() + case <-time.After(3 * time.Second): + killErr := cmd.Process.Kill() + return fmt.Errorf("backup output timeout, repository server down?: %w", killErr) + } + + err := cmd.Wait() if err != nil { var exitErr *exec.ExitError if errors.As(err, &exitErr) && exitErr.ExitCode() == 3 {