summaryrefslogtreecommitdiff
path: root/doc/tips/Bup_repositories_in_git-annex.mdwn
diff options
context:
space:
mode:
authorGravatar gernot <gernot@web>2014-08-05 20:14:25 +0000
committerGravatar admin <admin@branchable.com>2014-08-05 20:14:25 +0000
commitb4c50293f86e1cc31ec3b1698c9d4c2141261031 (patch)
treec8fc1e6a7f1e4c2a06cd0deb01fcb982f3254c20 /doc/tips/Bup_repositories_in_git-annex.mdwn
parentd289ed98251c1e85160a17c48b88e563769ca9bf (diff)
Diffstat (limited to 'doc/tips/Bup_repositories_in_git-annex.mdwn')
-rw-r--r--doc/tips/Bup_repositories_in_git-annex.mdwn51
1 files changed, 51 insertions, 0 deletions
diff --git a/doc/tips/Bup_repositories_in_git-annex.mdwn b/doc/tips/Bup_repositories_in_git-annex.mdwn
new file mode 100644
index 000000000..542dc2f58
--- /dev/null
+++ b/doc/tips/Bup_repositories_in_git-annex.mdwn
@@ -0,0 +1,51 @@
+I'd like to share my setup for keeping [bup](https://github.com/bup/bup/) repositories in git-annex.¹
+I'm not sure if this is a *good* tip, so comments are welcome.
+
+The purpose of this setup is to (kind of) bring encryption to bup,
+and make it easy to keep bup backups in untrusted storage by making use of the encryption modes and backends provided by git-annex.
+This approach can be used to make encrypted *backups of bup repositories*;
+it can not replace encrypted filesystems such as EncFS or S3QL
+which wouldn't necessarily require local bup repositories but also can't be combined with storage like Amazon Glacier.
+
+To add a bup repository to git-annex, initialize a regular indirect git-annex repository,
+and make the bup repository a subdirectory of it.²
+Then `git annex add $BUP_REPO/objects/packs`, i.e. the location of the large data files (.pack & .par2).
+The rest of the bup repository should be tracked by Git (`git add $BUP_REPO`).³
+This way the repository stays fully functional.
+
+After a bup-save the following steps will synchronize all remotes:⁴
+
+ git annex add $BUP_REPO/objects/pack
+ git add $BUP_REPO
+ git commit -m "Backup on $(date)"
+ git annex sync --content
+
+In my current setup, the git-annex repositories are located on a local file server.
+Various clients use bup to create backups on the server.
+This server also makes backups of other servers.
+Afterwards, it uploads the annexed data to Glacier
+(via an [encrypted S3 special remote](/special_remotes/S3/)),
+and pushes the small Git repositories to an S3QL filesystem and another off-site server.
+Using these repositories (and my GPG key) the bup repositories could be recovered.
+
+It may be important to note that in order to be able to *access* a bup repository,
+*all* files have to be available locally.
+Bup will not function if any pack files are missing (maybe this can be improved?).
+
+-----
+
+¹) Not to be confused with git-annex's [bup special remote](/special_remotes/bup/).
+
+²) You can't initialize git-annex repositories directly inside bup repositories
+because git-annex will (rightfully) identify them as bare git repositories and set itself up accordingly.
+
+³) I've come up with these .gitignore rules to exclude potentially large files not needed for recovery:
+
+ /bup_repo/bupindex*
+ /bup_repo/objects/pack/bup.bloom
+ /bup_repo/objects/pack/midx*midx
+ /bup_repo/objects/tmp*.pack
+ /bup_repo/index-cache/
+
+⁴) `git annex sync` might not be the safest command to use because it would merge changes from the remotes.
+However, assuming normal bup usage, external changes to the bup repository are not to be expected.