Artifactory清理二进制文件丢失的制品

一、摘要

        当制品上传到 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 URL>"exit 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?params=paths={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 URL>"exit 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 "正在清理存储库: $repo"response=$(curl -X POST -u $USERNAME:$PASSWORD "${BASE_URL}/artifactory/api/plugins/execute/deleteEmptyDirsPlugin?params=paths=$repo" -s -o /dev/null -w "%{http_code}")if [ $response -eq 200 ]; thenecho "Successfully processed $repo"elseecho "Failed to process $repo: HTTP status $response"fi
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

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/337745.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Java+SpringBoot+Mybaties-plus+Vue+elememt + uniapp 新闻资讯 的设计与实现

一.项目介绍 本系统分为 后端 和 小程序端 后端&#xff1a;点击登录按钮 设置个人中心、 管理员账号数据维护、 基础数据维护、 短视频信息维护(包括查看短视频留言、短视频收藏)、 论坛维护(增删改查帖子信息&#xff0c;包括查…

docker查看容器目录挂载

查看命令 docker inspect --format{{ json .Mounts }} <container_id_or_name> | jq 示例 docker inspect --format{{ json .Mounts }} af656ae540af | jq输出

一篇文章让你学会专注

专注&#xff0c;字典的释义是&#xff1a;专心注意&#xff1b;精神贯注。 我个人理解的是&#xff1a;用力屏蔽无关的事物&#xff0c;全身心力地专门注意一个事物。 你关心的&#xff0c;才能注意到&#xff0c;注意到了&#xff0c;才能故意地注意&#xff0c;进而全身心力…

【Linux-RTC】

Linux-RTC ■ rtc_device 结构体■ RTC 时间查看与设置■ 1、时间 RTC 查看■ 2、设置 RTC 时间 ■ rtc_device 结构体 Linux 内核将 RTC 设备抽象为 rtc_device 结构体 rtc_device 结构体&#xff0c;此结构体定义在 include/linux/rtc.h 文件中 ■ RTC 时间查看与设置 ■ 1…

服务器主板电池

一、什么是服务器纽扣电池&#xff1f; 服务器纽扣电池&#xff0c;也叫CMOS电池&#xff0c;是一种非常小型的电池&#xff0c;通常与服务器主板上的CMOS芯片相结合&#xff0c;用于储存BIOS设置、时钟和其他关键系统信息。这种电池的体积通常比一枚硬币还小&#xff0c;而且…

d3dcompiler43.dll丢失怎么修复,分享几种有效的修复教程

电脑已经成为我们生活中不可或缺的一部分。然而&#xff0c;由于各种原因&#xff0c;电脑可能会出现一些问题&#xff0c;其中之一就是d3dcompiler43.dll文件丢失。这个文件是DirectX组件之一&#xff0c;用于编译和链接DirectX应用程序。当这个文件丢失时&#xff0c;可能会导…

DataCube 漏洞小结

在这里分享一下通过拖取 DataCube 代码审计后发现的一些漏洞&#xff0c;包括前台的文件上传&#xff0c;信息泄露出账号密码&#xff0c;后台的文件上传。当然还有部分 SQL 注入漏洞&#xff0c;因为 DataCube 采用的是 SQLite 的数据库&#xff0c;所以SQL 注入相对来说显得就…

MAB规范(2):Introduction 介绍

Chapter1 Introduction 1.1 指南目的 MathWorks咨询委员会&#xff08;MAB&#xff09;指南规定了Simulink和Stateflow建模的重要基本规则。这些建模指南的总体目的是让建模者和控制系统模型的使用者能够简单、共同地理解。 指南的主要目标是&#xff1a; • 可读性  提高…

Ubuntu 安装好虚拟环境后,找不到workon 命令

1、安装虚拟环境 pip3 install virtualenv pip3 install virtualenvwrapper 2、安装完成后 workon 命令。 找不到workon 命令 执行&#xff0c;source virtualenvwrapper.sh 执行后&#xff0c;在使用workon命令&#xff0c;即可完成。

day-36 删除链表的倒数第 N 个结点

思路 首先计算出链表的长度&#xff0c;然后删除第n个节点即可&#xff0c;但要注意考虑特殊情况 解题方法 特殊情况&#xff1a;1.删除节点为最后一个节点 2.删除节点为头结点 Code /*** Definition for singly-linked list.* public class ListNode {* int val;* …

MySQL十部曲之九:MySQL优化理论

文章目录 前言概述查询优化查询执行计划EXPLAIN获取表结构信息获取执行计划信息 EXPLAIN 输出格式如何使用EXPLAIN进行优化 范围访问优化单列索引的范围访问多列索引的范围访问 索引合并优化索引合并交叉访问算法索引合并联合访问算法索引合并排序联合访问算法 索引下推优化连接…

使用LeanCloud平台的即时通讯

LeanCloud 是领先的 Serverless 云服务&#xff0c;为产品开发提供强有力的后端支持&#xff0c;旨在帮助开发者降低研发、运营维护等阶段投入的精力和成本。 LeanCloud 整合了各项服务&#xff0c;让开发者能够聚焦在核心业务上&#xff0c;为客户创造更多价值。 *即时通讯 …

5月29日-shell复习

一.Shell概述 1&#xff09;Linux提供的Shell解析器有&#xff1a;sudo cat /etc/shells /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash /bin/tcsh /bin/csh 2&#xff09;bash和sh的关系 cd /bin ll | grep bash 或者使用&#xff1a;ls -l /bin/ | grep bash 3&#xff0…

深入pandas:数据分析

目录 前言 第一点&#xff1a;导入模块 第二点&#xff1a;准备数据 第三点&#xff1a;简单的分析数据 第四点&#xff1a;【重点】数据透支 总结 前言 在数据分析与挖掘的领域&#xff0c;了解如何使用工具和方法来探索数据是至关重要的。本文将探讨如何利用Python中的…

MAB规范(1):概览介绍

前言 MATLAB的MAAB&#xff08;MathWorks Automotive Advisory Board&#xff09;建模规范是一套由MathWorks主导的建模指南&#xff0c;旨在提高基于Simulink和Stateflow进行建模的代码质量、可读性、可维护性和可重用性。这些规范最初是由汽车行业的主要厂商共同制定的&…

如何使用宝塔面板搭建Tipask问答社区网站并发布公网远程访问

文章目录 前言1.Tipask网站搭建1.1 Tipask网站下载和安装1.2 Tipask网页测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2 Cpolar稳定隧道&#xff08;云端设置&#xff09;2.3 Cpolar稳定隧道&#xff08;本地设置&#xff09; 3. 公网访问测试4.结语 前…

FreeRTOS基础(四):静态创建任务

上一篇博客&#xff0c;我们讲解了FreeRTOS中如何动态创建任务&#xff0c;那么这一讲&#xff0c;我们从实战出发&#xff0c;规范我们在FreeRTOS下的编码风格&#xff0c;掌握静态创建任务的编码风格&#xff0c;达到实战应用&#xff01; 目录 一、空闲任务和空闲任务钩子…

MT8781安卓核心板_MTK联发科Helio G99核心板规格参数

MT8781安卓核心板采用先进的台积电6纳米级芯片生产工艺&#xff0c;配备高性能Arm Cortex-A76处理器和Arm Mali G57 GPU&#xff0c;加上LPDDR4X内存和UFS 2.2存储&#xff0c;在处理速度和数据访问速度上都有着出色的表现。 MT8781还支持120Hz显示器&#xff0c;无需额外的DSC…

TK防关联引流系统:全球TikTok多账号运营的神器

在TikTok的生态中&#xff0c;高效运营多个账号已成为品牌全球推广的必经之路。为此&#xff0c;TK防关联引流系统应运而生&#xff0c;它是一款专为TikTok设计的效率神器&#xff0c;助您迅速搭建并管理全球多账号矩阵。该系统由先进的“防关联智能终端”硬件和智能的“TK防关…

随身wifi网络卡顿怎么解决?随身WiFi哪个牌子的最好用?排名第一名的随身WiFi!

对于随身wifi靠不靠谱这个问题&#xff0c;网上一直存在争议。很多人的随身wifi网速不稳定&#xff0c;信号看着满格就是上不了网。关于随身wifi卡顿到底该怎么解决呢&#xff1f; 1.如果是设备网络在一个地方上网速度很快&#xff0c;换一个地方网络就不行了&#xff0c;很可能…