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

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

问题人为错误与[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 Order By sha1
B.将输出保存为文件

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

a.进入Artifactory的filestore文件夹(例如…/ha-data/filestore/)
b.执行如下命令
找到。-mindepth 2 -type f -printf '%f\n' | sort >> binaries-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

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