如何检查在人工数据库对文件存储二进制文件的完整性?
问题人为错误与[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.将输出保存为文件
一个。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
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
复苏
您可以从备份位置恢复丢失的二进制文件。
