Skip to main content

(远程)索引档案的 Git-annex 特殊远程实现

项目描述

用于访问(远程)索引文件存档(RIA)的 Git-annex 专用远程

Travis 测试状态 GitHub 发布 PyPI 版本 fury.io

这个git-annex 特殊远程directory实现与git-annex 内置的特殊远程类型非常相似。有一些关键差异概述了人们可能会考虑使用这个的用例:

  • (可选)对(压缩)7z 档案的读取访问权限

    (部分)存储在遥控器中的密钥可以保存在 7z存档中。这些档案被索引并支持相对快速的随机读取访问。此功能对 HPC 存储系统很有帮助,因为文件系统 inode 上的强配额可能会强加给用户。远程的整个密钥存储可以放入存档中,重新使用完全相同的目录结构,并且在仅使用少数 inode 时保持完全可访问,而与文件数量和大小无关。

  • (基于 SSH 的远程)访问可配置目录

    可以提供 SSH 主机名,并且与远程的所有交互都将通过 SSH 执行。从本地操作转移到远程操作,或切换目标路径可以通过更改配置来完成(甚至根本不需要接触存储库)。这使得适应基础架构更改变得更加容易,尤其是在处理大量存储库时。

  • 多仓库目录结构

    虽然每个存储库都有自己关联的密钥存储目录树,但多个存储库的密钥存储目录可以组织成同质的存档目录结构。对于DataLad数据集,它们的 ID 用于定义存档中密钥存储的位置。对于任何其他存储库,使用附件远程 UUID。此功能进一步有助于处理备份或数据存储用例中的大量存储库,因为位置是从存储库属性派生的,而不必显式地重新配置它们。

安装

在安装此软件包之前,请确保您安装了最新版本的 git-annex。这个特殊的遥控器至少需要 git-annex 版本 6.20160511。之后,ria-remotePyPi安装最新版本:

# install from PyPi
pip install ria-remote

利用

通过 git-annex命令ria设置一个特殊的遥控器,就像任何其他“外部”类型的遥控器一样。initremote与标准设置相比,还有一个额外的必需设置:base-path它确定了特殊遥控器放置其键的基本目录:

git annex initremote myremote \
    type=external encryption=none \
    externaltype=ria base-path=/tmp/basepath/here

或者,base-path也可以通过设置annex.ria-remote.<remote>.base-path(在本例中 annex.ria-remote.myremote.base-path)通过 Git 配置变量提供。

遥控器现在可以使用了。任何目录都将按需创建。存储库的密钥存储将位于给定的基本路径下方,结构如下:

/tmp/basepath/here
└── 2e5
    └── 24934-a09e-11e9-8503-f0d5bf7b5561
        └── annex
            └── objects
                └── ff4
                    └── c57
                        └── MD5E-s4--ba1f2511fc30423bdbb183fe33f3dd0f
                            └── MD5E-s4--ba1f2511fc30423bdbb183fe33f3dd0f

其中前两个级别表示一个树结构,可以为任意数量的存储库托管密钥存储,其余级别与裸 Git 存储库的组织相同,附件对象树遵循directory-type 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

此配置将使特殊远程/tmp/basepath/here使用 ria.example.com. 任何 SSH 访问自定义(用户名、端口等)都必须通过标准 SSH 配置机制来实现,例如,通过在以下位置放置这样的代码段$HOME/.ssh/config

Host ria.example.com
  User mike
  Port 2222
  PreferredAuthentications publickey

还有其他可用的配置设置:

  • 默认情况下,ria-remote 将通过读取 ria-layout-version顶层 ( base-path) 以及各个数据集目录中的文件来检查远程端的布局版本。如果布局版本未知,它会将其模式设置为“只读”,并拒绝向该存储写入任何内容,以免意外混淆不同的布局。此行为可以通过设置为 来annex.ria-remote.<name>.force-write覆盖true

  • 远端可以指示将任何发生的异常写入日志文件。这有助于调试多用户中央存储场景中的问题。要使用此功能, ria-layout-version文件中记录的版本可以附加|l('l' for logging)。如果在数据集树的顶部完成,这将应用于所有数据集。但是,由于这样的日志可能会泄漏私人信息,因此任何客户端都可以通过设置忽略此配置 annex.ria-remote.<name>.ignore-remote-config。没有独立的服务器端处理,所有动作都由客户端特殊远程实例执行。

支持

此软件的所有错误、问题和增强请求都可以在这里提交: https ://github.com/datalad/git-annex-ria-remote/issues

项目详情


下载文件

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

源分布

ria_remote-0.7.ta​​r.gz (41.0 kB 查看哈希

已上传 source

内置分布

ria_remote-0.7-py2.py3-none-any.whl (32.1 kB 查看哈希

已上传 py2 py3