将jfrog一个目录中的所有文件夹拷贝到另外一个存储库下,不拷贝其中的文件。
脚本如下:
from requests.auth import HTTPBasicAuth # 导入HTTP基本身份验证模块
import requests, json # 导入请求库和JSON模块
# 脚本内容: 将JFrog存储库中的目录(不包括文件)全部在另一个存储库中创建出来
class PhraseArt():
def __init__(self, username, password, port, jfrog_url):
self.username = username # 用户名
self.password = password # 密码
self.port = port # 端口
self.jfrog_url = jfrog_url # JFrog的URL
self.url_items = jfrog_url + port + "/artifactory/api/storage/" # 存储项的URL
def create_folder(self, src_repo, dest_repo): # 创建目录的方法
dest_url = self.jfrog_url + self.port + "/artifactory/" + dest_repo + '/' + src_repo.split('/')[-1] + '/' # 目标目录URL
requests.put(dest_url, auth=HTTPBasicAuth(self.username, self.password)) # 发送PUT请求以创建目录
items_test = requests.get(self.url_items + src_repo, auth=HTTPBasicAuth(self.username, self.password)) # 发送GET请求以获取源目录内容
if items_test.status_code == 200: # 如果请求成功
data = items_test.content.decode() # 解码响应内容
datait = json.loads(data) # 将JSON数据解析为Python字典
items = datait['children'] # 获取子项列表
for item in items: # 遍历子项
if item.get('folder') == True: # 如果是目录
folder_uri = item.get('uri').strip('/') # 获取目录的URI
self.create_folder_structure(src_repo + '/' + folder_uri, dest_repo + '/' + src_repo.split('/')[-1] + '/' + folder_uri) # 递归调用create_folder_structure方法创建子目录
def create_folder_structure(self, src_path, dest_path): # 创建目录结构的方法
dest_url = self.jfrog_url + self.port + "/artifactory/" + dest_path + '/' # 目标目录URL
requests.put(dest_url, auth=HTTPBasicAuth(self.username, self.password)) # 发送PUT请求以创建目录
src_url = self.url_items + src_path # 源目录URL
items_test = requests.get(src_url, auth=HTTPBasicAuth(self.username, self.password)) # 发送GET请求以获取源目录内容
if items_test.status_code == 200: # 如果请求成功
data = items_test.content.decode() # 解码响应内容
datait = json.loads(data) # 将JSON数据解析为Python字典
items = datait['children'] # 获取子项列表
for item in items: # 遍历子项
if item.get('folder') == True: # 如果是目录
folder_uri = item.get('uri').strip('/') # 获取目录的URI
self.create_folder_structure(src_path + '/' + folder_uri, dest_path + '/' + folder_uri) # 递归调用create_folder_structure方法创建子目录
if __name__ == '__main__':
ou = PhraseArt("admin", "Saic@1234", "8084", "http://10.30.4.56:") # 创建PhraseArt对象,传入必要参数
ou.create_folder("Product/AVN_Application_A11", "Test") # 调用create_folder方法,将源目录中的目录结构创建到目标目录中