• 下载单个文件到本地:
  • # 下载远程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. SQL 日常练习 (二十)

    也只是尽快搬完这快一个月 sql 的砖, 准备要来整新学习模块了, 因此, 正好趁着五一, 加波速. 也会一直坚守和追求, 学无止境, 气有浩然. 每次都会说, 这是一种精神的传承,而我想的是, 不仅 ...

  2. vue3适配移动端的登录实现

    <script lang="ts" setup> import { ref } from 'vue' const PHONE_NUMBER_REGEX = /^1[0- ...

  3. DNSPY调试引用dll

    (1) 点击"调试",选择需要调试的可执行程序 (2) 点击"确定"后,打开程序,再点击"调试"-"窗口"-模块 (3) ...

  4. JAVA基础-跳出循环的4种方式

    摘要:介绍4种跳出循环的方式,尤其是其中的break 标签,有时候真的会成为工作中的秘密武器.   在实际编程中,有时需要在条件语句匹配的时候跳出循环.在 Java 语言里,由关键词 break 和 ...

  5. iStore实现 SmartDNS + AdGuard Home IP优选+广告屏蔽

    iStore实现 SmartDNS + AdGuard Home IP优选+广告屏蔽 参考自openwrt 官方版 安装配置 AdGuard Home + smartdns 告别广告烦扰 教程 软路由 ...

  6. kubernetes部署kafka集群

    一.kafka介绍 kafka是一个分布式.多副本.多订阅者.分区的,基于zoopkeeper协调的分布式日志系统.其主要特点为: 1.以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上 ...

  7. Spring的DI依赖注入

    xml中依赖注入bean bean标签下 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE b ...

  8. Mysql建表注意点

    库名.表名.字段名必须使用小写字母,"_"分割.

  9. 开源交流丨一站式大数据平台运维管家ChengYing安装原理剖析

    课件获取:关注公众号"数栈研习社",后台私信 "ChengYing" 获得直播课件 视频回放:点击这里 ChengYing开源项目地址:github 丨 git ...

  10. 阿里P7,竟问这么简单的题目?

    今天面试阿里后端开发, ● 面试官提问:谈谈你对 const 理解 ● 我这样回答的: const 仅仅表示变量不能修改,太简答了,我早就知道了. ● 面试官回复:你觉得 这样能面过 P7 ,百万年薪 ...