使用git-annex向远程服务器复制实际文件失败如何排查解决
报错原因
你在serverC上执行git annex init origin属于操作错误:git annex init后跟的参数是当前本地仓库的自定义描述名,而非要关联的远端名。这一步把serverC的本地git-annex仓库描述设为了origin,和你从serverA克隆时默认生成的远端remote(指向serverA的裸仓库,默认名就是origin)重名。
git-annex同步内容时需要通过仓库uuid、描述名匹配远端节点,重名会导致serverB尝试校验serverC的节点状态时匹配失败,无法确认远端annex目录的可用性,所以抛出unable to check NEW报错。
解决步骤
第一步:在serverC上修正本地仓库配置
- 执行
git annex init "serverC",覆盖之前错误的仓库描述,你也可以替换为任意可识别的名称,只要不和现有远端重名即可 - 执行
git annex sync origin,把修正后的仓库元数据同步到serverA的裸仓库
第二步:在serverB上重新拉取元数据并同步内容
- 执行
git annex sync origin,拉取最新的集群仓库元数据,获取serverC修正后的节点信息 - 执行
git annex sync NEW --content,即可正常将大文件同步到serverC
可选排查项
如果执行上述操作后仍然报错,可以按顺序检查:
- 确认serverB使用的ssh账号对serverC的仓库路径有读写权限,可直接执行
scp testFile ssh://serverC/<仓库路径>/做写入测试 - 确认serverC仓库目录下的
.git/annex/文件夹对ssh登录用户开放读写权限 - 执行
git annex info NEW查看serverB上识别到的NEW远端uuid,和serverC上执行git annex info拿到的本地uuid对比,确认二者一致,没有匹配错误
内容的提问来源于stack exchange,提问作者Guuk
相关产品推荐
相关产品推荐

