Just barely managed to get the borg special remote fully working by end of day today. I'm still a bit shocked it was possible to do this at all, let alone as neatly as it turned out, with so few changes to git-annex to support such an entirely different thing.
I put in a fair amount of effort to making it fast to keep up-to-date with
changes to the borg repo; git-annex sync
does need to run borg list
to
check what archives are in it, but it avoids rescanning archives it already
knows the contents of.
There are a slew of new todo items related to this special remote: ?allow overriding untrust of import remotes, ?borg special remote add subdir config, ?sync --content with borg does not get content, ?borg sync tree not grafted, ?use same vector clock for content identifier updates in import
And, if this backup-as-a-remote idea does turn out to be useful, there are lots of other backup programs. It would be good to be able to write external special remotes for them, but that would need a protocol extension.
This work was sponsored by Mark Reidenbaach on Patreon.