nexus3 npm-hosted仓库迁移

news2024/11/26 17:52:12

迁移背景:

从nexus 3.33 升级到 nexus 3.64 过程中,私服 npm-hosted 无法上传。由于这个 npm-hosted 和 npm-proxy 放的同一个 blob存储,无法单独拆除去,所以采用迁移的方式

迁移思路:

down下来 npm-hosted 仓库,然后 批量上传

技术栈:

python shell 正则

down仓库的python文件:

import os
import re
import requests
from urllib.parse import unquote

def decode_urls(url_list):
    decoded_urls = [unquote(url) for url in url_list]
    return decoded_urls

def download_url(url, save_dir):
    response = requests.get(url)

    # 检查响应状态码
    if response.status_code == 200:
        # 获取URL的基本路径
        base_url = '/'.join(url.split('/')[:-1])

        # 解析HTML内容
        html_content = response.text

        # 搜索所有链接
        links = find_links(html_content)
        # 遍历链接
        for link in links:
            file_url = base_url +"/"+ link


            # 检查链接是否为目录
            if link.endswith('/'):

                # 创建本地目录
                save_subdir = os.path.join(save_dir, link)
                os.makedirs(save_subdir, exist_ok=True)

                # 递归下载子目录
                download_url(file_url, save_subdir)
            else:
                # 下载文件
                save_file = link.split("/")[-1]
                download_file(link, save_dir+save_file)
    else:
        print(f"Failed to download URL: {url}")


def find_links(html_content):
    # 使用正则表达式或HTML解析库解析HTML内容,提取所有链接
    # 例如,可以使用正则表达式 r'<a\s+href=[\'"](.*?)[\'"]\s*>' 来提取链接
    # 返回一个包含所有链接的列表
    # 使用正则表达式匹配链接
    pattern = r'<a\s+href=[\'"](.*?)[\'"]\s*>'
    matches = re.findall(pattern, html_content)
    matches = decode_urls(matches)
    if '../' in matches:
        matches.remove('../')
    print(matches)

    # 返回匹配到的链接列表
    return matches


def download_file(url, save_path):
    response = requests.get(url, stream=True)

    # 检查响应状态码
    if response.status_code == 200:
        with open(save_path, 'wb') as f:
            for chunk in response.iter_content(chunk_size=8192):
                f.write(chunk)
    else:
        print(f"Failed to download file: {url}")


# 指定下载URL和保存目录
url = "https://mirrors.xinyunkeji.com/service/rest/repository/browse/npm-test-hosted/"
save_dir = '/opt/npm/download'

# 创建保存目录(如果不存在)
os.makedirs(save_dir, exist_ok=True)

# 开始下载
download_url(url, save_dir)

批量上传新仓库shell文件:

这个curl语句是从api接口里面,模拟上传一个文件,然后再下方获取的curl命令
在这里插入图片描述

#!/bin/bash
#需要上传到的仓库url
url='https://mirrors.xinyunkeji.com/service/rest/v1/components?repository=npm-test-hosted2'
#使用python下载的仓库目录
directory='/opt/npm/download'
#nexus有上传权限的账户密码
username='test'
password='mimaya'

for file in $(find $directory -name "*.tgz"); do
  echo "准备上传${file}文件"
  curl -X POST $url \
    -H 'accept: application/json' \
    -H 'NX-ANTI-CSRF-TOKEN: 0.05104117117544127' \
    -H 'X-Nexus-UI: true' \
    -F "npm.asset=@$file;type=application/x-compressed" \
    -u "$username:$password"
done

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

e2studio开发三轴加速度计LIS2DW12(3)----检测活动和静止状态

e2studio开发三轴加速度计LIS2DW12.3--检测活动和静止状态 概述视频教学样品申请源码下载新建工程工程模板保存工程路径芯片配置工程模板选择时钟设置UART配置UART属性配置设置e2studio堆栈e2studio的重定向printf设置R_SCI_UART_Open()函数原型回调函数user_uart_callback ()…

【征服redis8】Redis的AOF持久化

Redis 支持多种持久化方式来保证数据的可靠性和持久性。前面我们介绍了RDB方式。我们我们介绍第二种方式——AOF&#xff08;Append Only File&#xff09;机制是一种常用的持久化方式&#xff0c;它记录了所有对 Redis 数据库进行修改的命令&#xff0c;在 Redis 重启时可以使…

【Java】HttpServlet类中前后端交互三种方式(query string、form表单、JSON字符串)

在前后端的交互中&#xff0c;前端通过以下三种方式来与后端进行交互&#x1f31f; ✅query string ✅form表单 ✅JSON字符串 下面我们将书写这三种方式的后端代码并进行讲解 1、Query String QueryString即在url中写入键值对&#xff0c;一般用doGet方法进行交互 代码如下 …

读AI3.0笔记02_起源

1. 起源 1.1. 1955年&#xff0c;28岁的麦卡锡进入了达特茅斯学院的数学系 1.2. 该领域的正式确立可以追溯到1956年由一位名叫约翰麦卡锡的年轻数学家在达特茅斯学院举办的一场小型研讨会 1.2.1. 在1956年&#xff0c;即便是最先进的计算机&#xff0c;其速度也达不到现代智…

HarmonyOS —— buildMode 设置(对比 Android Build Varient)

前言 在安卓中 Build Variant 主要依赖模块&#xff08;module&#xff09;中 build.gradle 的 BuildType 和 ProductFlavor 提供的属性和方法&#xff0c;我们可以使用 Build Type 可以配置不同的构建方式、ProductFlavor 主要用来进行多渠道打包。 在鸿蒙中要做到同样像效果…

用CHAT分析高校体育智慧教学体系构建与探索研究现状

CHAT回复&#xff1a;现阶段&#xff0c;高校体育智慧教学体系的构建与探索研究还处于初级阶段&#xff0c;但全球数字化转型大潮的推动下&#xff0c;一些较为前沿的研究和实践已经开始出现&#xff1a; 1.教学平台的建设&#xff1a;很多高校已经开始尝试使用在线教育平台进行…

web蓝桥杯真题--9、水果拼盘

介绍 目前 CSS3 中新增的 Flex 弹性布局已经成为前端页面布局的首选方案&#xff0c;本题可以使用 Flex 属性快速完成布局。 准备 开始答题前&#xff0c;需要先打开本题的项目代码文件夹&#xff0c;目录结构如下&#xff1a; ├── css │ └── style.css ├── im…

【计算机图形学】习题课:Viewing

【计算机图形学】Viewing 部分问题与解答 CS100433 Computer Graphics Assignment 21 Proof the composed transformations defined in global coordinate frame is equivalent to the composed transformations defined in local coordinate frame but in different composing…

2024年腾讯云轻量服务器和CVM云服务器性能如何?

腾讯云轻量服务器和云服务器有什么区别&#xff1f;为什么轻量应用服务器价格便宜&#xff1f;是因为轻量服务器CPU内存性能比云服务器CVM性能差吗&#xff1f;轻量应用服务器适合中小企业或个人开发者搭建企业官网、博客论坛、微信小程序或开发测试环境&#xff0c;云服务器CV…

进阶Docker4:网桥模式、主机模式与自定义网络

目录 网络相关 子网掩码 网关 规则 docke网络配置 bridge模式 host模式 创建自定义网络(自定义IP) 网络相关 IP 子网掩码 网关 DNS 端口号 子网掩码 互联网是由许多小型网络构成的&#xff0c;每个网络上都有许多主机&#xff0c;这样便构成了一个有层次的结构。 IP 地…

新品发布 | 思腾合力深思系列「IW4235-4GRc」4U机架式高性能服务器

新品发布 | 思腾合力深思系列「IW4235-4GRc」4U机架式高性能服务器 Sitonholy 思腾合力 2024-01-17 17:35 发表于北京 采用第4/5代Intel Xeon 可扩展处理器 4U标准的机架式高性能服务器 极致性能提升 支持第4/5代Intel Xeon 可扩展处理器&#xff0c;CPU 3 UPI性能高达16 GT/s…

重置aws上的ssh默认登录端口

aws上的ec2机器&#xff0c;默认ssh的登录都是22&#xff0c;为了防止被黑&#xff0c;记录下修改该默认端口的方法 修改/etc/ssh/sshd_config文件,将Port 22注释去掉在上面的文件中&#xff0c;加入一行&#xff0c;你想要增加的端口号&#xff0c;格式和22一致注意&#xff1…

云原生场景下,AIGC 模型服务的工程挑战和应对

作者&#xff1a;徐之浩、车漾 “成本”、“性能”和 “效率”正在成为影响大模型生产和应用的三个核心因素&#xff0c;也是企业基础设施在面临生产、使用大模型时的全新挑战。AI 领域的快速发展不仅需要算法的突破&#xff0c;也需要工程的创新。 大模型推理对基础设施带来…

2024.1.18每日一题

LeetCode 2171.拿出最少数目的魔法豆 2171. 拿出最少数目的魔法豆 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给定一个 正整数 数组 beans &#xff0c;其中每个整数表示一个袋子里装的魔法豆的数目。 请你从每个袋子中 拿出 一些豆子&#xff08;也可以 不拿出&a…

机器视觉系统在汽车车轮毂检测上的应用

将机器视觉用于轮毂检测&#xff0c;可以利用图像分析的方法来测量轮毂特征尺寸、判断轮毂形状&#xff0c;并获取其位置坐标等信息&#xff0c;从而能够辨识流水生产线上的各种款式和型号的汽车轮毂。 市面上对汽车车轮毂具体检测要求如下 &#xff1a; 1.为了分辨流水线上…

Chrome 开发者工具

Chrome 开发者工具 介绍控制面板时间线下载信息概要请求列表单个请求时间线优化时间线上耗时项 lighthouse 插件Performance&#xff08;性能指标&#xff09;Accessibility&#xff08;可访问性&#xff09;Best Practices&#xff08;最佳实践&#xff09;SEO&#xff08;搜索…

在 Jenkins 中使用 SSH Servers 配置文件上传路径

引言 在使用 Jenkins 进行持续集成和持续部署&#xff08;CI/CD&#xff09;的过程中&#xff0c;有时我们需要将构建好的文件上传到远程服务器。本文将介绍如何在 Jenkins 的 SSH Servers 配置中设置文件的上传目录&#xff0c;以及这些设置是如何组合以形成最终的上传路径。…

AJAX和Axios异步框架

AJAX&#xff1a;Asynchronous JavaScript And XML 异步的JavaScript和XML 作用&#xff1a;1、与服务器进行数据交换&#xff0c;通过AJAX可以给服务器发送请求&#xff0c;并获取服务器响应数据。使用了AJAX和服务器进行通信&#xff0c;就可以使用ajax和html来代替jsp页面了…

Python4Delphi安装及编译

1.下载或直接克隆python4delphi组件资源到指定目录,我这里下载到Components文件夹下,并对下载的文件夹进行了重命名为(P4D),重命名不是必须的 下载地址:https://github.com/pyscripter/python4delphi 2.安装 2.1在已下载的目录下进入Install文件夹,双击MultiInstaller.exe…

基于python+uniapp的网上订餐系统的设计与实现 微信小程序

考虑到实际生活中在晓海网上订餐方面的需要以及对该系统认真的分析&#xff0c;将系统权限按管理员和用户这两类涉及用户划分。 &#xff08;1&#xff09;用户功能需求 用户进入APP可以进行首页、系统公告、在线投诉、我的等操作&#xff0c;在我的页面可以对菜品评价、订单信…