Linux

從新儲存庫訪問 git-annex 特殊遠端

  • January 13, 2021

我正在使用git-annexin,version 7.20190129因為它在我的Debian Stable (Buster)機器上提供,以將大文件置於版本控制之下,並將它們分佈在多台機器和驅動器上。只要我至少有一個“真實”git-annex儲存庫(不是special remote.

我感興趣的是git annex在我的本地機器上只使用一個儲存庫,另外special remotes(例如,或者,或者,一旦它登陸,)。bup special remotersync special remoteDebian Stableborg special remote

我的工作流程如下:

cd /path/to/my/local/folder
git init
git annex init
git annex add myawesomefile
git commit -m 'this works on my local repository'
git annex initremote mybupbackuprepo type=bup encryption=none buprepo=/path/to/my/special/remote/location
git annex sync
git annex copy files --to mybupbackuprepo

然後我可以使用我bup special remote的,因為我會使用一個額外的儲存庫。

但是現在我想在bup不使用第一個本地 repo 的情況下訪問我的 repo(例如,以防我的本地機器出現故障)。據我了解(從遵循official guide,以下應該工作:

cd /path/to/new/folder/to/extract/the/backup
git init
git annex init
git annex initremote mybupbackuprepo type=bup encryption=none buprepo=/path/to/my/special/remote
git annex enableremote mybupbackuprepo
git annex sync

git annex sync --content但是我仍然看不到任何文件(甚至是一些損壞的符號連結),而且很明顯,在使用or時也無法獲取我的任何數據git annex get myawesomefile

有任何想法嗎?我錯過了什麼?

一個特殊的遙控器只是儲存文件數據,而不是 git 儲存庫。把它想像成一個圖書館的地下室:圖書館可能會建造一個額外的房間來存放它的書籍,但是如果你想從地下室建一個圖書館,你沒有任何索引,不知道哪本書在裡面哪個目錄,而您沒有可以幫助您找到書籍的圖書管理員。

因此,在實踐中,您將需要另一個 git 儲存庫來複製 master 分支,其中包含有關去往何處的所有資訊。

在像您這樣的情況下(您自己託管該儲存),您不需要任何特殊的遠端 - 您用作源的正常(通常但不一定是裸露的)git儲存庫也可以儲存大文件,並且可以稍後結帳時使用

$ git clone ssh://host/path/repo
$ cd repo
$ git annex init
$ git annex get --from origin

(這裡--from origin更多是為了說明;如果你把它關掉,git附件也會知道該怎麼做)。

在許多情況下,您甚至不需要特殊的遙控器;使用特殊遙控器的原因是:

  • 您希望將(小但經常需要的)git 訪問與數據訪問(大量數據)分開,並且您的數據託管程序只為您提供 rsync(或 webdav 或 s3 或任何協議)訪問,而不是完整的 shell 訪問
  • 您的 git 託管程序只為您提供了裸 git,並且沒有安裝 git-annex(例如 GitLab)——那麼您需要一個額外的數據託管程序
  • 您需要後端的任何特殊屬性(例如跨儲存庫的重複數據刪除,僅在您不使用加密時才有效)

在大多數情況下(就像你的情況一樣),只需使用正常的 git 遠端和附件複製數據就可以了,設置起來也少了很多麻煩,最重要的是,無論如何你都需要一個來恢復數據。

引用自:https://unix.stackexchange.com/questions/627737