
一、摘要
当Artifactory中的制品被上传时,系统会记录相关的元数据信息,包括文件路径、大小、校验和(如MD5、SHA1)、上传时间、索引以及依赖等。实际的制品二进制文件会被存储在指定的存储后端。若需更改存储位置,可以通过配置artifactory的binarystore.xml文件来实现。一旦二进制文件丢失或误删,这些制品将无法从Artifactory中直接使用或下载。为此,我们需要重新上传这些丢失的制品或者从系统中删除相关的制品信息。
二、查询丢失的二进制文件制品
1. 我们需要下载以下脚本以查询Artifactory中丢失的二进制文件制品,脚本位于:
/jfrog/artifactory-scripts/blob/master/filestoreIntegrity/filestoreIntegrity.py
2. 安装运行脚本所需的python3环境:
使用命令 yum -y install python3 进行安装。
3. 授予脚本执行权限:
chmod +x filestoreIntegrity.py
4. 运行脚本,并传入Artifactory的URL等必要参数:
./filestoreIntegrity.py http(s)://{artifactory_url}/artifactory -u {user} -o output.txt
执行完成后,会在当前目录下生成一个名为output.txt的文件,其中包含了丢失的二进制文件制品的信息。
三、删除指定的制品
1. 为了更高效地删除制品,我们需要创建一个脚本。创建一个新的脚本文件:
touch delartifact.sh
2. 编辑脚本内容,使其能够循环遍历output.txt文件中的制品信息并进行删除操作:
在脚本中,首先判断用户是否提供了Artifactory的URL,然后提示用户输入用户名和密码。接着,通过curl命令检查用户名、密码和URL的正确性。之后,从output.txt文件中读取制品列表,并通过curl命令发送DELETE请求删除每个制品。
具体脚本内容可根据实际情况调整和完善。
3. 授予脚本执行权限:
chmod +x delartifact.sh
4. 运行删除制品的脚本,并传入Artifactory的URL:
sh delartifact.sh http(s)://{artifactory_url}
删除完成后,存储库中可能会留下一些空目录。对于这种情况,我们可以使用Artifactory的插件进行清理。
四、清理空目录(针对7版本的artifactory)
为了清理存储库中的空目录,我们可以使用一个插件来实现。插件的下载链接为:/jfrog/artifactory-user-plugins/blob/master/cleanup/deleteEmptyDirs/deleteEmptyDirs.groovy将此插件放置到指定的插件目录下,并重新加载插件。之后,可以通过特定的API接口来执行清理操作。如果要清理所有空目录,可以先获取所有存储库的信息并进行整理,然后创建一个脚本来进行统一清理。整个过程中涉及到的命令和操作步骤都已详细描述。对于创建脚本进行统一清理的部分可以参考之前的步骤创建新的脚本并调整脚本内容以适应清理所有空目录的需求。另外还需要注意处理用户输入和判断等操作。在清空垃圾桶时也要确保使用了正确的URL和凭据。至此我们已经完成了对Artifactory中丢失二进制文件制品的处理以及空目录的清理工作。
