• 下载单个文件到本地:
  • # 下载远程a.txt 到本地a.txt
    jf rt dl "aa/bb/a.txt" "a.txt" --url="$ARTIFACTORY_URL_SWF" --user="小绿" --password="$API_KEY_SWF" --flat=true # 单个文件上传下载命令:
    jf rt dl "要下载的远程文件名称" "下载到本地的名称" --url="artifactory_url" --user="username" --password="api_token" --flat=true
    例如:jf rt dl "apricot_rse/i3_RSU/RSE_System_Staging_Build/20250513/E228.0/System_411487/deliverables/STAR3.0/fastboot_build/dev/fastboot_android_qnx_all_images_userdebug_dev_20250513_411487.tar.gz" "fastboot_android_qnx_all_images_userdebug_dev_20250513_411487.tar.gz" --ur
    l="https://artifact.abc:443/artifactory/" --user="GAYUXIA" --password="aaaaaaaaaaaaaaaaaaaa" --flat=true
  • 批量下载文件到本地:
  • #下载远程aa/dev 到本地的AA/DEV 目录下
    #ARTIFACTORY_URL_SWF="https://abc.def.com/artifactory/"
    # --falst=true 如果是 true,则所有文件会扁平化下载到同一个目录中。
    #扁平化下载:所有文件都下载到一个目录下,包括子目录的文件也下载到同一个目录,没有目录层级
    jf rt dl "aa/dev/" "AA/DEV/" --url="$ARTIFACTORY_URL_SWF" --user="GAYUXIA" --password="$API_KEY_SWF" --flat=true
  • 上传单个文件到指定目录:
  • # --recursive=true:从源目录递归上传文件。
    # --flat=true 将文件上传到指定的确切目标路径,但不保留源目录结构。
    # 这里的artifactory_url 必需写到:https://www.abc.com/artifactory/ 这里
    jf rt u --fail-no-op --recursive=true --flat=true --url $artifactory_url $file $upload_dir --user=$username --password=$api_key 例如:
    jf rt u --fail-no-op --recursive=true --flat=true --url https://www.abc.com/artifactory/ a.txt A/B/C/a.txt --user=$username --password=$api_key
  • 查询指定目录下的文件列表:
  • jf rt search --access-token="你的API TOKEN" --url=https://artifact.XXX.com/artifactory/ apricot_rse/i3_RSU/VCPU/8295_master/STAR3.5/E230.0-1686/dev/ --count=false --include-dirs=false
  • 查询artifactory指定目录的所有文件夹,文件,以及文件的大小
  • (1):定义一个search-spec.json文件,文件内容如下:
  • {
    "files": [
    {
    "pattern": "apricot_rse/i3_RSU/RSE_System_Staging_Build/*/*",
    "recursive": "true",
    "includeDirs": "false",
    "sortBy": [
    "created"
    ],
    "sortOrder": "asc"
    }
    ]
    }

    (2):查询命令:

  •     cmd = [
    "jf", "rt", "search",
    "--spec=search-spec.json",
    "--server-id=artifactory"
    ] # --server-id=artifactory 这里的参数需要使用jf c add 预先配置,artifactory_url地址,artifactory_username,artifactory_password
    #完整脚本代码如下:
    import subprocess
    import json
    import pandas as pd
    from datetime import datetime
    import re
    from pathlib import Path
    import os def create_spec_file():
    spec = {
    "files": [
    {
    "pattern": "apricot_rse/i3_RSU/RSE_System_Staging_Build/*/*",
    "recursive": "true",
    "includeDirs": "false",
    "sortBy": ["created"],
    "sortOrder": "asc"
    }
    ]
    }
    with open("search-spec.json", "w") as f:
    json.dump(spec, f, indent=2)
    print("创建 search-spec.json") def run_jfrog_search():
    cmd = [
    "jf", "rt", "search",
    "--spec=search-spec.json",
    "--server-id=artifactory"
    ] try:
    result = subprocess.run(
    cmd,
    check=True,
    capture_output=True,
    text=True
    )
    with open("result.json", "w") as f:
    f.write(result.stdout)
    print("结果已保存到 result.json")
    return True
    except subprocess.CalledProcessError as e:
    print(f"执行失败:\n{e.stderr}")
    return False def get_data(filename="result.json"):
    prefix = "apricot_rse/i3_RSU/RSE_System_Staging_Build/"
    cutoff_date = datetime.strptime("2025-04-18", "%Y-%m-%d") with open(filename, 'r', encoding='utf-8') as f:
    data = json.load(f) filtered_data = []
    for item in data:
    created_str = item.get("created", "")[:10] # 只取日期部分
    try:
    created_date = datetime.strptime(created_str, "%Y-%m-%d")
    except ValueError:
    # 无效日期格式跳过这条
    continue if created_date >= cutoff_date:
    path = item.get("path", "")
    if path.startswith(prefix):
    path = path[len(prefix):]
    #if (path.endswith(('.tar', '.tar.gz')):
    #if (path.endswith(('.tar', '.tar.gz')) and 'dev' in path):
    #if path.endswith(('.tar', '.tar.gz')) and 'dev' in path and any(keyword in path for keyword in ['android_fastboot', 'flat_build', 'BOOT']):
    #pattern = r'.*(android_fastboot|flat_build|BOOT).*dev.*\.tar(\.gz)?$'
    #if re.search(pattern, path, re.IGNORECASE):
    if (
    #path.endswith(('.tar', '.tar.gz')) and
    path.endswith(('.tar.gz')) and
    (
    # 匹配 swup/dev/*/*/BOOT/
    ('swup/dev' in path and '/BOOT/' in path and 'BOOT_ALWAYS_ON' not in path) or
    # 匹配 flat_build/dev/
    ('flat_build/dev' in path) or
    # 匹配 fastboot_build/dev/
    #('fastboot_build/dev/' in path) or
    ('android/dev/' in path)
    )
    ):
    path_obj = Path(path)
    size_bytes = item.get("size")
    size_gb = round(size_bytes / (1024**3), 2) if size_bytes is not None else None package_name = os.path.basename(path)
    parts = path.split('/')
    version = parts[1] if len(parts) > 1 else ""
    #if not package_name.startswith(("symbols_vmlinux")):
    if not package_name.startswith(("symbols_vmlinux",)) and "userdebug" not in package_name:
    filtered_data.append({
    "created": created_str,
    "version": version,
    "path": path,
    "package_name" : package_name,
    "size": size_gb
    }) df = pd.DataFrame(filtered_data)
    df.to_excel('output.xlsx', index=False) if __name__ == "__main__":
    create_spec_file()
    run_jfrog_search()
    get_data(filename="result.json")

artifactory 上传下载命令的更多相关文章

  1. Linux系统简单易用的上传下载命令rz和sz

    一)安装方法汇总 1.安装方法(推荐) yum install lrzsz -y 2.在安装Linux系统时选中"DialupNetworking Support"组包 3.安装系 ...

  2. Linux系统上传下载命令rz和sz

    Linux系统简单易用的上传下载命令rz和sz (2017年7月10日更新) 发布地址(http://oldboy.blog.51cto.com/2561410/588592) (一)安装方法汇总 1 ...

  3. linux系统上传下载命令rz和sz的教程

    (一)安装方法汇总(注意:一下命令如果没有权限的需要在每个命令前面加一个sudo) 1.安装方法(推荐) sudo yum install lrzsz 2.在安装Linux系统时选中“DialupNe ...

  4. Linux shell:FTP(文件传输协议)上传下载命令

    SecureCRT通过ftp将nmon上传,建立一个目录,用命令上传文件.[命令见下面] 或通过UE.SSH上传/下载,使用sftp建立链接. [通过cmd进入ftp服务器]先假设有一FTP服务器,F ...

  5. Linux 下上传下载命令,SCP,SFTP,FTP

    scp 帮助命令: man scp scp功能: 下载远程文件或者目录到本地, 如果想上传或者想下载目录,最好的办法是采用tar压缩一下,是最明智的选择. 从远程主机 下载东西到 本地电脑 拷贝文件命 ...

  6. Xshell 5 配置上传下载命令

    可以在官网https://www.netsarang.com/products/main.html 下载Xshell, 目前最新的版本已经到Xshell 6了 本人记录下安装的目录截图: 安装命令:  ...

  7. xshell5 上传下载命令

    借助XShell,使用linux命令sz可以很方便的将服务器上的文件下载到本地,使用rz命令则是把本地文件上传到服务器. yum -y install lrzsz 其中,对于sz和rz的理解与记忆我用 ...

  8. ftp文件上传下载命令

    介绍:从本地以用户wasqry登录的机器1*.1**.21.67上通过ftp远程登录到ftp服务器上,登录用户名是lte****,以下为使用该连接做的实验.  查看远程ftp服务器上用户lte**** ...

  9. sftp 上传下载 命令介绍

    sftp是Secure FileTransferProtocol的缩写,安全文件传送协议.可以为传输文件提供一种安全的加密方法. sftp与 ftp有着几乎一样的语法和功能.SFTP为 SSH的一部分 ...

  10. XShell上传下载命令

    参考:https://www.centos.bz/2012/12/xshell-securecrtrz-sz-upload-download/ 上传文件时,执行rz就会弹出文件选择对话框来选择文件.下 ...

随机推荐

  1. 为Java虚拟机分配堆内存大于机器物理内存会怎么样?

    之前在某个地方看到的一个问题,"如果为Java虚拟机指定的堆内存大于物理内存会怎么样?",今天正好又看到了HotSpot VM中关于为堆分配内存的源代码实现,顺便从源代码角度解答一 ...

  2. jFinal 使用 SolonMCP 开发 MCP(拥抱新潮流)

    MCP 官方的 java-sdk 目前只支持 java17+.直接基于 mcp-java-sdk 也比较复杂.使用 SolonMCP,可以基于 java8 开发(像 MVC 的开发风格),且比较简单. ...

  3. K8s进阶之MetalLB实现LoadBalancer

    概述 LoadBalancer官网文档:https://kubernetes.io/zh-cn/docs/concepts/services-networking/service/#loadbalan ...

  4. TVM:Object家族

    Object.h概述 命名空间: TVM::runtime 文件中包含的结构: 1.结构体TypeIndex 2.类Object 3.类ObjectPtr 4.类ObjectRef 5.结构体Obje ...

  5. Go语言flag包:命令行解析

    转载:http://c.biancheng.net/view/5573.html 在编写命令行程序(工具.server)时,需要对命令行参数进行解析,各种编程语言一般都会提供解析命令行参数的方法或库, ...

  6. Solon Ai Flow 编排开发框架发布预告(效果预览)

    Solon Ai 在推出 Solon Ai Mcp 后,又将推出 Solon Ai Flow. 1.Solon Ai Flow 是个啥? Solon Ai Flow 是一个智能体编排开发框架(基于 s ...

  7. AtCoder Beginner Contest 357-F

    Problem 同步于博客 Problem You are given sequences of length \(N\), \(A=(A_1,A_2,\ldots,A_N)\) and \(B=(B ...

  8. 《机器人SLAM导航核心技术与实战》第1季:第12章_典型自主导航系统

    <机器人SLAM导航核心技术与实战>第1季:第12章_典型自主导航系统 视频讲解 [第1季]12.第12章_典型自主导航系统-视频讲解 [第1季]12.1.第12章_典型自主导航系统_ro ...

  9. 2025 智能制造必看!国内五大 MES 系统排名深度解析

    在 "中国制造 2025" 战略持续推进的背景下,制造企业数字化转型进入深水区.作为连接计划层与控制层的核心枢纽,MES(制造执行系统)已成为实现智能工厂的关键技术.2024 年国 ...

  10. 01windows环境配置

    Windows Verilog开发环境配置指南 本指南将详细介绍如何在Windows系统上搭建完整的Verilog开发和仿真环境,包括iverilog.gtkwave.vvp和make工具的安装与配置 ...