跳转到主要内容

Git-annex专为(远程)索引存档实现的特殊远程

项目描述

Git-annex用于访问(远程)索引文件存档(RIA)的特殊远程实现

Travis tests status GitHub release PyPI version fury.io

这个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

项目详情


下载文件

下载适合您平台文件的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。

源代码分布

ria_remote-0.7.tar.gz (41.0 kB 查看散列值)

上传时间 源代码

构建分布

ria_remote-0.7-py2.py3-none-any.whl (32.1 kB 查看散列值)

上传时间 Python 2 Python 3

支持