upload_ossobject_from_aliyun.py

通过脚本程序将服务器目录/data/app/oss_from_aliyun/data/xxx/upload下的文件上传至阿里云OSS指定Bucket的子目录中,同时记录上传过程中的成功与失败详情。

脚本功能实现

#!/usr/bin/env python3
# upload_ossobject_from_aliyun.py

import oss2
import os
import logging

# 设置日志
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')

def upload_directory(bucket_name, endpoint, access_key_id, access_key_secret, local_dir, oss_prefix):
    # 配置认证信息
    auth = oss2.Auth(access_key_id, access_key_secret)

    # 初始化Bucket实例
    bucket = oss2.Bucket(auth, endpoint, bucket_name)

    # 遍历本地目录下的所有文件
    for root, dirs, files in os.walk(local_dir):
        for file in files:
            # 构建完整的本地文件路径
            local_file_path = os.path.join(root, file)

            try:
                # 构建OSS中的目标路径
                oss_key = os.path.join(oss_prefix, os.path.relpath(local_file_path, local_dir))

                # 上传文件
                bucket.put_object_from_file(oss_key, local_file_path)
                logging.info(f'Successfully uploaded {local_file_path} to {oss_key}')
            except Exception as e:
                logging.error(f'Failed to upload {local_file_path} to {oss_key}: {str(e)}')

# 配置参数
bucket_name = 'bucketname'
endpoint = 'oss-cn-shanghai.aliyuncs.com'
access_key_id = 'AccessKey ID for OSS'
access_key_secret = 'AccessKey Secret for OSS'
local_dir = '/data/app/oss_from_aliyun/data/xxx/upload'
oss_prefix = 'data'  # 上传到bucket的/data目录中

# 调用函数上传文件
upload_directory(bucket_name, endpoint, access_key_id, access_key_secret, local_dir, oss_prefix)

运行上传功能

[root@dev-rocky9-shanghai-area1 ~]# python3 /data/python/upload_ossobject_from_aliyun.py 
2024-07-22 16:01:15,485 - INFO - Successfully uploaded /data/app/oss_from_aliyun/data/xxx/upload/oss.tmp to data/oss.tmp
上一篇
下一篇