You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

68 lines
2.4 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import Util.OssUtil
import os
from Util.CommonUtil import *
import sys
def percentage(consumed_bytes, total_bytes):
# 当HTTP响应头部没有Content-Length时total_bytes的值为None。
if total_bytes:
rate = int(100 * (float(consumed_bytes) / float(total_bytes)))
print('\r{0}% '.format(rate), end='')
sys.stdout.flush()
backupPath = "D:/backup"
if not os.path.exists(backupPath):
os.makedirs(backupPath)
# 设置前缀和分页参数
prefix = 'Images/System'
max_keys = 20 # 每页显示的最大文件数量
auth = Util.OssUtil.oss2.Auth(Util.OssUtil.accessKeyId, Util.OssUtil.accessKeySecret)
bucket = Util.OssUtil.oss2.Bucket(auth, Util.OssUtil.endpoint, Util.OssUtil.bucketName)
# 如果你想要手动控制分页可以使用marker参数
marker = ''
is_truncated = True
# 遍历文件
while is_truncated:
try:
# 使用list_objects方法获取对象列表
result = Util.OssUtil.oss2.ObjectIterator(bucket, prefix=prefix, marker=marker, max_keys=max_keys)
for obj in result:
if obj.key.count('/') < 3:
continue
array = obj.key.split('/')
if not os.path.exists(backupPath + '/' + array[0] + '/' + array[1] + '/' + array[2]):
os.makedirs(backupPath + '/' + array[0] + '/' + array[1] + '/' + array[2])
local_file_path = backupPath + '/' + obj.key
if not os.path.exists(local_file_path):
# 使用get_object_to_file方法下载文件
bucket.get_object_to_file(obj.key, local_file_path, progress_callback=percentage)
printf(f'文件 {obj.key} 已下载到 {local_file_path}')
# 使用os.path.getsize()获取文件大小
file_size = os.path.getsize(local_file_path)
# 检查文件是否为0字节
if file_size == 0:
printf(f'文件 {obj.key} 为0字节,下载错误!!!!')
exit(0)
# 更新marker为下一页的起始点
marker = result.next_marker
# 检查是否还有更多的文件
is_truncated = result.is_truncated
except Exception as e:
# 处理异常情况
printf(e)
printf("恭喜,所有文件备份成功完成!")
# http://hzkc.oss-cn-beijing.aliyuncs.com/Images/System/4/20240514164847051.png