tip for probably best use case for borg with git-annex
This commit is contained in:
parent
e10855e723
commit
d95f647572
1 changed files with 52 additions and 0 deletions
|
@ -0,0 +1,52 @@
|
||||||
|
[Borg](https://www.borgbackup.org/) is a deduplicating archiver
|
||||||
|
with compression and encryption. It can be used with git-annex, as an
|
||||||
|
unusual kind of special remote. Since borg can efficiently store old
|
||||||
|
versions of files, storing them in borg, rather than the git-annex
|
||||||
|
repository can free up disk space.
|
||||||
|
|
||||||
|
git-annex is not able to store files in borg itself. Instead the way this
|
||||||
|
works is you use borg to store your git-annex repository, and then
|
||||||
|
`git-annex sync` scans the borg repository to find out what annexed files are
|
||||||
|
stored in it. And when needed, git-annex can retrieve annexed files from
|
||||||
|
the borg repository.
|
||||||
|
|
||||||
|
Let's set that up. Run this from the top directory of your git-annex repository:
|
||||||
|
|
||||||
|
# borg init --encryption=keyfile ../borgrepo
|
||||||
|
# git annex initremote borg type=borg borgrepo=../borgrepo
|
||||||
|
# borg create ../borgrepo `pwd`::{now}
|
||||||
|
# git annex sync borg
|
||||||
|
|
||||||
|
Now git-annex knows that all the files in the repository have been stored
|
||||||
|
in borg. But when you try to drop a file, you'll find that
|
||||||
|
git-annex does not trust the borg repository.
|
||||||
|
|
||||||
|
drop file (unsafe)
|
||||||
|
Could only verify the existence of 0 out of 1 necessary copies
|
||||||
|
|
||||||
|
Also these untrusted repositories may contain the file:
|
||||||
|
ca863c47-9ded-4dd0-bd7d-9b65e5624171 -- [borg]
|
||||||
|
|
||||||
|
Why is this? Well, you could use `borg delete` or `borg prune` to delete
|
||||||
|
the content of the file from the borg repository at any time, so git-annex
|
||||||
|
defaults to not trusting it. This is fine when you're using borg to take
|
||||||
|
backups, and need to delete old borg archives to free up space on the
|
||||||
|
backup drive. And it can be useful to use git-annex with such borg backups.
|
||||||
|
But our goal is instead to move old versions of files to borg. So, we need
|
||||||
|
to decide not to delete things from the borg repository ourselves, and tell
|
||||||
|
git-annex that we will only use borg to append to the borg repository.
|
||||||
|
|
||||||
|
# git annex enableremote borg appendonly=yes
|
||||||
|
|
||||||
|
Now when you use git-annex to drop files, git-annex will treat the borg
|
||||||
|
repository as [[a copy|copies]]. Finally, we can move all the old versions
|
||||||
|
of files to the borg repository.
|
||||||
|
|
||||||
|
# git annex unused
|
||||||
|
# git annex drop --unused
|
||||||
|
|
||||||
|
You can continue running `borg create` and `git-annex sync` as your files
|
||||||
|
changes to store them in borg and let git-annex know what's stored there.
|
||||||
|
|
||||||
|
See [[special_remotes/borg]] for more details about using borg as a special
|
||||||
|
remote.
|
Loading…
Add table
Add a link
Reference in a new issue