默认情况下,我得到一个错误,我有过多的打开的文件。 如果我手动解除限制,我得到一个错误,我内存不足。 无论出于何种原因,似乎目前状态下的Git附件没有针对这类任务进行优化(一次添加数千个文件到存储库)。
作为一个可能的解决scheme,我的下一个想法是做类似的事情:
cd / find . -type d | xargs git annex add --$NONRECURSIVELY find . -type f | xargs git annex add # Need to add parent directories of each file first or adding files fails
这个解决scheme的问题是,似乎从文档中不能以非recursion方式在Git附件中添加一个目录。 有什么我失踪或解决这个?
如果我提出的解决scheme是死路一条,那么人们解决这个问题还有别的方法吗?
更新:不要这样做。
很显然,Git Annex将每个添加到一个仓库的文件移动到.git / annex / objects中的某个目录结构中,然后用符号链接replace成.git中的真实文件。 如果我没有第一次尝试添加/ etc,这将会很好。
不用说,服务器软件。 幸运的是,我想出了一个解决办法:
find /etc -type l | while read file ; do realpath=`realpath "${file}"` ; rm "${file}" ; cp -rfa "${realpath}" "${file}" ; done
编辑:无视; 我真笨; 系统仍然洗涤; 这将是一个漫长的夜晚。
第二编辑:pipe理取消系统。 它涉及很多手动重build/ etc和重新安装每个软件包,包括重新configuration/解开大量的软件包,以及debugging/解决大量的APT问题。 不会再试一次。
至于控制300G文件的版本问题,每当我决定做一些事情,让它工作时(不pipe是否使用Git附件),我都会回来更新。
小更新:
这整个问题完全是用户错误。 我的根驱动器是一个256 GB的SSD,而我试图添加的文件夹之一映射到一个1.5 TB的RAID 1arrays。 不pipe我怎么做到这一点,它将不可避免地试图将更多的文件复制到/.git文件夹比驱动器可能适合(杜)。 不知道我以为会发生什么:/。
这就是为什么你不要乱搞系统目录…
初始化1.5TB驱动器上的Git Annex存储库,然后复制我想要备份的根级目录。 正常的git annex add . 工作出色,而且我的存储库在过去五天左右使用这些Annex-Glacier钩子一直支持自己到Glacier。
我使用附件进行主机pipe理,如下所示:
这一切都像一个低速,分布式的“pipe理文件系统”,具有版本控制,分级,以及任何你想要如何使用git和git附件的平衡。
如果你正确地pipe理你的机器,你不需要检查整个根文件系统 – 大多数机器不会因机器而异。 你需要有一些pipe理软件包安装和升级的方法,但是这个工具本身可以被检查到附件中,以及它用作源数据的软件包和其他blob – 再次,所有版本都是由git提供的。