git - 使用 git-annex 管理许多小(~5KB)文件

标签 git file git-annex

我已经使用 git-annex 来管理我的数据有一段时间了,我发现它相当令人满意。

但是,在处理我的神经影像数据时,git Attachment 的性能相当不足。此类数据通常包含许多图像文件 (5KB),例如每个实验中每个参与者大约有 36,000 个图像文件。您可以看到,即使进行了几次实验,我的数据存储库也积累了超过一百万个文件。

有什么方法可以减轻运行gitannexsyncgitannexget时的巨大延迟吗?如果没有,是否有任何(大致)类似的软件可以让我管理多个神经影像数据存储库?

最佳答案

大量文件在多个层面上效率低下;也许你可以改进神经成像软件?

如果这不是一个选择,您可以执行多种操作。第一个是将数据存储在 SSD 上。这些操作很慢,因为它们必须查询存储库中每个文件的状态,而将它们放在 SSD 上可以使每个磁盘的读取速度快得多。

另一种方法是限制任何给定目录中的文件数量。您可能无法拆分单个实验中的文件,但请确保没有将多个实验中的文件放在同一目录中。这是因为目录的访问时间通常与该目录中的文件数量成正比。

另一个方法是研究不同的文件系统或不同的文件系统配置;并非所有文件系统都适合大型目录。例如,在 ext3/4 上,您可以设置文件系统选项 dir_index,以便它使用 B 树索引来加快大型目录的访问时间。使用tune2fs程序进行设置。

最后一个绝望的选择可能是将所有这些小文件 merge 到存档中,例如 tarball 或 zip 文件。这可能会使处理它们变得复杂,但会大大减少您必须处理的文件数量。您还可以通过编写脚本来消除由此导致的一些复杂性;例如,当您需要查看这些图像之一时,您的脚本可以将 tarball 提取到临时目录中,启动查看器,然后在退出时删除提取的文件。

关于git - 使用 git-annex 管理许多小(~5KB)文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33468157/

相关文章:

javascript - 从 JavaScript 获取文件

python - 写入文件的更好方法?

java - 从包中包含的文件位置读取

git - GitLab 是否通过 git-annex 或其他方式支持大文件?

Git 删除分支和所有相应的更改

git - 从 GitHub fork 到 Bitbucket

git - .git/refs 中的哪些目录有特殊含义?

java - 如何在 JGit 中对文件进行 "cat"处理?

带有 bup 的 git 附件