企业门户网站开发背景,wordpress 关闭摘要,企业网络营销策略,wordpress页脚二维码一、摘要 当制品上传到 Artifactory 时#xff0c;Artifactory 会在数据库中记录制品的相关元数据信息#xff0c;包括文件路径、大小、校验和#xff08;如 MD5、SHA1#xff09;、上传时间、索引、依赖等。实际的制品二进制文件会存储在指定的存储后端#xff0c;具体的…一、摘要 当制品上传到 Artifactory 时Artifactory 会在数据库中记录制品的相关元数据信息包括文件路径、大小、校验和如 MD5、SHA1、上传时间、索引、依赖等。实际的制品二进制文件会存储在指定的存储后端具体的存储位置可以配置artifactory的配置文件binarystore.xml来更改。如果二进制文件被意外删除或丢失的话将无法在Artifactory使用和下载这些制品。而我们只能重新上传此制品文件或者删除掉Artifactory上的制品信息今天我们讲如何删除这些二进制文件丢失的制品。
二、先查询出二进制文件丢失的制品
1、我们需要在下方Github链接中把此脚本下载下来它可以查询出Artifactory中二进制文件丢失的制品:
https://github.com/jfrog/artifactory-scripts/blob/master/filestoreIntegrity/filestoreIntegrity.py
2、安装脚本运行需要的python3环境
yum -y install python3
3、授予权限
chmod x filestoreIntegrity.py
4、运行此脚本
./filestoreIntegrity.py http(s)://{artifactory_url}/artifactory -u {user} -o output.txt 5、运行完成后会在我们当前目录下多一个output.txt文件此文件里面的内容便是我们二进制文件丢失的制品信息。 三、删除指定的制品
1、我们需要写一个脚本用来更快捷的删除制品第一步我们要创建脚本文件。
touch delartifact.sh
2、编写脚本内容此脚本可以循环遍历output.txt文件的制品信息来进行逐一删除。
#!/bin/bash# Artifactory的基本URL
BASE_URL$1#判断是否输入Url
if [ -z $1 ]; thenecho 错误: 必须提供 Artifactory 的 URL。echo 用法: $0 Artifactory URLexit 1
fi# Artifactory的用户名和密码
read -p 请输入用户名: USERNAMEread -s -p 请输入密码: PASSWORD#换行防止判断输出和密码在同一行
echo#判断用户名密码和Url是否正确
CODE$(curl -u ${USERNAME}:${PASSWORD} ${BASE_URL}/artifactory/api/system/ping -s -o /dev/null -w %{http_code})
if [ $CODE -ne 200 ];thenecho 请检查用户名 密码 Url 是否正确exit 1
fi# 从output.txt文件中读取制品列表
ARTIFACTS$(cat ./output.txt | cut -f2 -d] | head -n -1)# 循环遍历制品列表发送DELETE请求删除每个制品
for artifact in ${ARTIFACTS[]}; dourl${BASE_URL}/artifactory/${artifact}response$(curl -X DELETE -u ${USERNAME}:${PASSWORD} ${url} -s -o /dev/null -w %{http_code})if [[ $response -eq 204 ]]; thenecho Deleted artifact: ${artifact}elseecho Failed to delete artifact: ${artifact}fi
done
3、授予权限
chmod x delartifact.sh
4、运行删除制品
sh delartifact.sh http(s)://{artifactory_url} 5、删除完制品后在我们存储库中可能会产生空目录比如说maven-local/javax/annotation/javax.annotation-api/1.3.2/javax.annotation-api-1.3.2.jar的jar包被清理而且无其他文件那么此目录将没有作用7版本的artifactory会自动清理这些空目录而6版本的则需要我们去安装个插件来统一清理。
四、清理空目录7版本的artifactory会自动清理
1、我们需要在下方Github链接中把此插件下载下来它可以清理存储库中的空目录
https://github.com/jfrog/artifactory-user-plugins/blob/master/cleanup/deleteEmptyDirs/deleteEmptyDirs.groovy
2、将此插件放到$ARTIFACT_HOME/var/etc/plugins目录下
3、重新加载插件
curl -X POST -u {admin}:{password} http(s)://{artifactory_url}/artifactory/api/plugins/reload 4、下面是插件运行方式需要指定存储库或者路径。
curl -X POST -v -u {admin}:{password} http(s)://{artifactory_url}/artifactory/api/plugins/execute/deleteEmptyDirsPlugin?paramspaths{repo},{path} 5、如果要清理所有空目录则要先获取所有存储库的信息并整理到一个文件中用脚本来进行统一清理。
curl -X POST -u {admin}:{password} http(s)://{artifactory_url}/artifactory/api/repositorie repo.txt 6、创建并编写脚本使其逐一清理所有存储库
touch delfolder.sh
#!/bin/bash# Artifactory的基本URL
BASE_URL$1#判断是否输入Url
if [ -z $1 ]; thenecho 错误: 必须提供 Artifactory 的 URL。echo 用法: $0 Artifactory URLexit 1
fi# Artifactory的用户名和密码
read -p 请输入用户名: USERNAMEread -s -p 请输入密码: PASSWORD#换行防止下面判断输出和密码在同一行
echo#判断用户名密码和Url是否正确
CODE$(curl -u ${USERNAME}:${PASSWORD} ${BASE_URL}/artifactory/api/system/ping -s -o /dev/null -w %{http_code})
if [ $CODE -ne 200 ];thenecho 请检查用户名 密码 Url 是否正确exit 1
fi# 读取文件并逐行处理
for repo in $(cat repo.txt | grep key | cut -f4 -d); doecho 正在清理存储库: $reporesponse$(curl -X POST -u $USERNAME:$PASSWORD ${BASE_URL}/artifactory/api/plugins/execute/deleteEmptyDirsPlugin?paramspaths$repo -s -o /dev/null -w %{http_code})if [ $response -eq 200 ]; thenecho Successfully processed $repoelseecho Failed to process $repo: HTTP status $responsefi
done
7、授予权限
chmod x delfolder.sh
8、运行脚本
sh delfolder.sh http(s):{artifactory_url} 9、清空垃圾桶
curl -u {admin}:{password} -X POST http://{artifactory_url}/artifactory/api/trash/empty