nexus3 npm-hosted仓库迁移

2024-01-18 11:20
文章标签 仓库 npm 迁移 nexus3 hosted

本文主要是介绍nexus3 npm-hosted仓库迁移,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

迁移背景:

从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 unquotedef decode_urls(url_list):decoded_urls = [unquote(url) for url in url_list]return decoded_urlsdef 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 matchesdef 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"); doecho "准备上传${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

这篇关于nexus3 npm-hosted仓库迁移的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/618829

相关文章

java实现docker镜像上传到harbor仓库的方式

《java实现docker镜像上传到harbor仓库的方式》:本文主要介绍java实现docker镜像上传到harbor仓库的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 前 言2. 编写工具类2.1 引入依赖包2.2 使用当前服务器的docker环境推送镜像2.2

Conda虚拟环境的复制和迁移的四种方法实现

《Conda虚拟环境的复制和迁移的四种方法实现》本文主要介绍了Conda虚拟环境的复制和迁移的四种方法实现,包括requirements.txt,environment.yml,conda-pack,... 目录在本机复制Conda虚拟环境相同操作系统之间复制环境方法一:requirements.txt方法

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

Maven 依赖发布与仓库治理的过程解析

《Maven依赖发布与仓库治理的过程解析》:本文主要介绍Maven依赖发布与仓库治理的过程解析,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录Maven 依赖发布与仓库治理引言第一章:distributionManagement配置的工程化实践1

解决Maven项目idea找不到本地仓库jar包问题以及使用mvn install:install-file

《解决Maven项目idea找不到本地仓库jar包问题以及使用mvninstall:install-file》:本文主要介绍解决Maven项目idea找不到本地仓库jar包问题以及使用mvnin... 目录Maven项目idea找不到本地仓库jar包以及使用mvn install:install-file基

Maven如何手动安装依赖到本地仓库

《Maven如何手动安装依赖到本地仓库》:本文主要介绍Maven如何手动安装依赖到本地仓库问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、下载依赖二、安装 JAR 文件到本地仓库三、验证安装四、在项目中使用该依赖1、注意事项2、额外提示总结一、下载依赖登

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

SQL Server数据库迁移到MySQL的完整指南

《SQLServer数据库迁移到MySQL的完整指南》在企业应用开发中,数据库迁移是一个常见的需求,随着业务的发展,企业可能会从SQLServer转向MySQL,原因可能是成本、性能、跨平台兼容性等... 目录一、迁移前的准备工作1.1 确定迁移范围1.2 评估兼容性1.3 备份数据二、迁移工具的选择2.1

将sqlserver数据迁移到mysql的详细步骤记录

《将sqlserver数据迁移到mysql的详细步骤记录》:本文主要介绍将SQLServer数据迁移到MySQL的步骤,包括导出数据、转换数据格式和导入数据,通过示例和工具说明,帮助大家顺利完成... 目录前言一、导出SQL Server 数据二、转换数据格式为mysql兼容格式三、导入数据到MySQL数据

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓