You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Nexus仓库下载目录并保留原文件夹结构?

保留层级下载Nexus仓库目录的解决方案

方法1:使用wget递归下载(最简单)

直接用wget的递归下载功能,自动保留目录结构,适合不需要复杂逻辑的场景:

# 替换为你的Nexus地址、仓库名、目标路径及认证信息
wget --recursive --no-parent --user=你的用户名 --password=你的密码 http://你的nexus地址/repository/你的仓库名/目标目录路径/

参数说明:

  • --recursive:递归下载所有子目录及文件
  • --no-parent:避免下载目标目录的父级内容
  • --user/--password:Nexus的认证信息(如果仓库需要权限)

如果希望本地只保留目标目录以下的层级,而非从repository开始的完整路径,可以添加--cut-dirs=N参数,N是需要跳过的路径段数。比如目标URL是http://nexus.example.com/repository/my-repo/app/v1/,要跳过repository/my-repo这2段,就加--cut-dirs=2,本地会直接生成app/v1/的结构。

方法2:改进bash脚本(基于Nexus API)

如果必须用API,修改脚本逻辑,先解析文件路径再创建本地目录后下载:

#!/bin/bash

# 配置参数
NEXUS_URL="http://你的nexus地址"
REPO_NAME="你的仓库名"
TARGET_DIR="目标目录路径(比如/app/v1)"
USER="你的用户名"
PASSWORD="你的密码或认证token"

# 获取目标目录下所有文件的完整路径(依赖jq工具解析JSON)
curl -u "$USER:$PASSWORD" "$NEXUS_URL/service/rest/v1/assets?repository=$REPO_NAME&path=$TARGET_DIR" | jq -r '.items[].path' | while read FILE_PATH; do
    # 创建本地对应目录
    LOCAL_FOLDER=$(dirname "$FILE_PATH")
    mkdir -p "$LOCAL_FOLDER"
    # 下载文件到对应目录
    curl -u "$USER:$PASSWORD" -o "$FILE_PATH" "$NEXUS_URL/repository/$REPO_NAME/$FILE_PATH"
done

注意:需要先安装jq工具(比如apt install jq或brew install jq),如果你的Nexus用的是v2 API,替换API地址为$NEXUS_URL/service/local/repositories/$REPO_NAME/content$TARGET_DIR?depth=-1&recursive=true,并调整解析逻辑(v2返回XML,可改用xmllint解析)。

方法3:使用Nexus CLI工具

如果可以安装Nexus官方CLI工具,操作更简洁:

# 先安装nexus-cli(根据系统选择安装方式,比如pip install nexus-cli)
nexus-cli assets download --repository 你的仓库名 --path 目标目录路径 --local-dir ./本地保存根目录 --recursive

该工具会自动识别远程目录结构,在本地对应路径下保存文件。

内容的提问来源于stack exchange,提问作者Barvazi Momo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 16:57:26