【发布时间】:2018-09-25 14:36:29
【问题描述】:
我正在尝试使用 IBM Cloud Object Storage 来存储用户上传到我的站点的图像。我的这个功能很好用。
但是,根据此处的文档 (link),似乎一次只能从存储桶中下载一个对象。
有没有办法可以从存储桶中下载所有对象列表?从 COS 存储桶请求多个对象是否有不同的方法?
【问题讨论】:
我正在尝试使用 IBM Cloud Object Storage 来存储用户上传到我的站点的图像。我的这个功能很好用。
但是,根据此处的文档 (link),似乎一次只能从存储桶中下载一个对象。
有没有办法可以从存储桶中下载所有对象列表?从 COS 存储桶请求多个对象是否有不同的方法?
【问题讨论】:
通过 REST API,不,您一次只能下载一个对象。但大多数工具(如 AWS CLI 或 Minio 客户端)允许下载共享前缀的所有对象(例如 foo/bar 和 foo/bas)。 S3 库的 IBM 分支现在也与 Aspera 集成,并且可以一次传输所有大型目录。你想做什么?
【讨论】:
根据 S3 规范 (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html),您一次只能下载一个对象。
【讨论】:
有多种tools可以帮助一次从COS下载多个对象。我使用AWS CLI工具从COS下载和上传对象。
所以安装 aws-cli 工具并通过提供 access_key_id 和 secret_access_key here 进行配置。
递归复制 S3 对象到本地目录:当使用参数--recursive 传递时,以下 cp 命令递归地将指定前缀和存储桶下的所有对象复制到指定目录。
C:\Users\Shashank>aws s3 cp s3://yourBucketName . --recursive
例如:
C:\Users\Shashank>aws --endpoint-url http://s3.us-east.cloud-object-storage.appdomain.cloud s3 cp s3://yourBucketName D:\s3\ --recursive
在我的情况下,端点基于 us-east 区域,我将对象复制到 D:\s3 目录中。
递归复制本地文件到S3:当使用参数--recursive 传递时,下面的cp 命令递归地将指定目录下的所有文件复制到指定的bucket。
C:\Users\Shashank>aws s3 cp myDir s3://yourBucketName/ --recursive
例如:
C:\Users\Shashank>aws --endpoint-url http://s3.us-east.cloud-object-storage.appdomain.cloud s3 cp D:\s3 s3://yourBucketName/ --recursive
我正在将对象从 D:\s3 目录复制到 COS。
更多参考可以看链接here。
我希望它对你有用。
【讨论】: