Mit git- und rsync-Zugriff auf denselben Server können Sie auf diesem Server sowohl den Verlauf (über den git-Zugriff) als auch den Anhang-Schlüsselwertspeicher (über den rsync-Zugriff) speichern. Diese können auch entkoppelt und auf einer beliebigen Anzahl verschiedener Server gespeichert werden.
Sie haben anscheinend bereits alle benötigten Tools gelesen. Grundsätzlich erhalten Sie zwei separate Fernbedienungen, die beide auf unterschiedliche Speicherorte auf Server-c verweisen. Die erste Fernbedienung (Server-c) ist eine normale Git-Fernbedienung zum Synchronisieren Ihres Verlaufs und aller Elemente, die direkt in das Git-Repo eingecheckt werden. Die zweite Fernbedienung ist eine spezielle Fernbedienung im Anhang.
[remote "server-c"]
url = git@example.com:/path/to/repo.git
fetch = +refs/heads/*:refs/remotes/server-c/*
[remote "server-c-rsync"]
annex-rsyncurl = example.com:/home/user/annex-rsync
annex-uuid = ...
Sie sollten in der Lage sein, dies wie folgt einzurichten:
git remote add server-c git@example.com:/path/to/repo.git
git annex initremote server-c-rsync type=rsync rsyncurl=example.com:/home/user/annex-rsync encryption=none
Dies sollte Ihnen die grundlegende Funktionalität bieten, die Sie suchen. Der einzige Nachteil ist, dass Sie zwei verschiedene Remote-Namen haben, die wirklich auf denselben Server verweisen. Insbesondere müssen Sie nur daran denken, die spezielle Fernbedienung (server-c-rsync) zu verwenden, wenn Sie die Argumente --to = oder --from = für get, copy und move verwenden.
Es ist möglicherweise möglich, eine einzelne Fernbedienung auf beide Standorte zu richten. Ich bin mir jedoch nicht sicher, ob dies tatsächlich unterstützt wird. Die folgenden Befehle scheinen eine sinnvolle .git / config zu erstellen.
git init
git annex init "test"
git remote add server-c git@example.com:/path/to/repo.git
git annex initremote server-c type=rsync rsyncurl=example.com:/rsync/user encryption=none
Für mich führt dies zu einer einzelnen Fernbedienung in .git / config mit einer URL = (für die normalen Git-Operationen) und einem Anhang-rsyncurl =. Ich habe dies jedoch nicht weiter getestet, um sicherzustellen, dass der Git-Anhang die URL ignoriert und nur den Eintrag annex-rsyncurl verwendet, wenn mit angehängten Dateien gearbeitet wird.