如何检查Artifactory数据库对文件存储二进制文件的完整性?

约书亚汉
2023-01-22 11:09

问题: Artifactory错误[ERROR] (o.a.r.c.e.GlobalExceptionMapper:48) -二进制提供程序没有内容…在artifactory.log

可能的原因
1.Artifactory的数据文件夹没有正确配置,指向错误的目录
1.在Artifactory不知情的情况下,从外部移动/删除Artifactory数据文件夹中的二进制校验和文件

故障排除:
您可以运行以下方法之一,根据文件存储快速检查数据库中二进制文件的完整性

方法1(仅限单个NFS)

1.通过从“binaries”表中查询sha1值,从Artifactory的数据库中获得二进制文件列表

例如,MySQL:
一个。SELECT sha1 FROM binary By sha1
B.将输出保存为文件

2.从Artifactory的文件存储中获取二进制文件列表。

a.进入Artifactory的文件存储文件夹(例如:../ha-data/filestore/)
b.执行以下命令
找到。-mindepth 2 -type f -printf '%f\n' | sort >> binary -in-filestore.out

3.使用你最喜欢的diff工具找出上述结果之间的差异
如。
用户添加图片

方法2(仅限单个文件存储)

虽然上面的方法给出了比较DB和FIlestore的最有效的方法,但有一个用户插件可以更容易地做到这一点。请注意这个插件只适用于使用简单的基于文件系统的文件存储(通常是本地文件系统存储,或者NFS挂载)的Artifactory实例。
https://github.com/jfrog/artifactory-user-plugins/tree/master/filestore/filestoreIntegrity

方法3 (S3、分片存储等)
如果您希望找到损坏的二进制文件,但正在使用更复杂的文件存储,如S3、HDFS或分片存储,您可以使用这个脚本代替。注意,上述脚本不是特别快速或有效,可能不适合在大型Artifactory实例上使用。
https://github.com/jfrog/artifactory-scripts/tree/master/filestoreIntegrity

复苏
您可以从备份位置恢复丢失的二进制文件。