Git-annex专为(远程)索引存档实现的特殊远程
项目描述
Git-annex用于访问(远程)索引文件存档(RIA)的特殊远程实现
这个git-annex 特殊远程实现与git-annex内置的directory
特殊远程类型非常相似。有几个关键差异概述了可能考虑使用此实现的使用场景
-
(可选)对(压缩的)7z存档的读取访问
远程中存储的密钥的一部分可以位于7z存档中。这些存档已索引并支持相对快速的随机读取访问。此功能在可能对用户施加强文件系统inode配额的HPC存储系统中可能非常有用。整个远程密钥存储可以放入存档,重新使用完全相同的目录结构,并且仅使用少量inode即可完全访问,无论文件数量和大小如何。
-
(基于SSH的远程)对可配置目录的访问
可以提供SSH主机名,所有与远程的交互将通过SSH执行。从本地到远程操作的转换或切换目标路径可以通过更改配置来完成(甚至无需触摸任何存储库)。这使得适应基础设施变更变得更加容易,尤其是在处理大量存储库时。
-
多存储库目录结构
虽然每个存储库都有自己的相关密钥库目录树,但多个存储库的密钥库目录可以组织成一个同构的归档目录结构。对于DataLad数据集,它们的ID用于在归档中定义密钥库的位置。对于任何其他存储库,使用附件远程UUID。此功能进一步有助于在备份或数据存储用例中处理大量存储库,因为位置是从存储库属性派生的,而不是必须明确重新配置它们。
安装
在安装此包之前,请确保您已安装最新版本的git-annex。这个特殊远程至少需要git-annex版本6.20160511。之后,从PyPi安装最新版本的ria-remote
。
# install from PyPi
pip install ria-remote
使用
设置一个ria
特殊远程就像设置任何其他“外部”类型的远程一样,通过git-annex的initremote
命令。与标准设置相比,这里有一个额外的必需设置:base-path
,它确定特殊远程放置其密钥的基本目录。
git annex initremote myremote \
type=external encryption=none \
externaltype=ria base-path=/tmp/basepath/here
或者,也可以通过Git配置变量提供base-path
,通过设置annex.ria-remote.<remote>.base-path
(在这个例子中是annex.ria-remote.myremote.base-path
)。
远程现在已准备好使用。任何目录将在需要时创建。存储库的密钥库将位于指定的基本路径下,结构如下
/tmp/basepath/here
└── 2e5
└── 24934-a09e-11e9-8503-f0d5bf7b5561
└── annex
└── objects
└── ff4
└── c57
└── MD5E-s4--ba1f2511fc30423bdbb183fe33f3dd0f
└── MD5E-s4--ba1f2511fc30423bdbb183fe33f3dd0f
其中前两级表示可以托管任意数量存储库密钥的树结构,其余级别与裸Git存储库的组织相同,附件对象树遵循directory
类型git-annex特殊远程的布局。这两级目录的名称由特殊远程的git-annex UUID或可用的DataLad数据集UUID构建。
特殊远程还支持基于SSH的操作。要启用它,必须提供额外的主机名参数
git annex initremote myremote \
type=external encryption=none \
externaltype=ria base-path=/tmp/basepath/here \
ssh-host=ria.example.com
此配置将使特殊远程在ria.example.com
上使用/tmp/basepath/here
。任何SSH访问自定义(用户名、端口等)必须通过标准的SSH配置机制实现,例如,通过在$HOME/.ssh/config
中放置如下代码片段:
Host ria.example.com
User mike
Port 2222
PreferredAuthentications publickey
还有其他配置设置可用
-
默认情况下,ria-remote将通过读取顶级(
base-path
)以及各个数据集目录中的ria-layout-version
文件来检查远程端布局版本。如果布局版本未知,它将将其模式设置为“只读”,并拒绝向该存储写入任何内容,以避免意外混淆不同的布局。可以通过将annex.ria-remote.<name>.force-write
设置为true
来覆盖此行为。 -
远程端可以指示将发生的任何异常写入日志文件。在多用户中央存储场景中调试问题时这可能很有用。为此,记录在
ria-layout-version
文件中的版本可以附加|l
('l'表示日志)。如果在上层数据集树中这样做,这将应用于所有数据集。然而,由于此类日志可能泄露私人信息,可以通过设置annex.ria-remote.<name>.ignore-remote-config
来忽略此配置。没有独立的服务器端处理,所有操作都由客户端特殊远程实例执行。
支持
有关此软件的所有错误、问题和增强请求都可以在此处提交:https://github.com/datalad/git-annex-ria-remote/issues
项目详情
下载文件
下载适合您平台文件的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。