如何将目录下的多个文件上传到 S3?

如何将目录下的多个文件上传到 S3?

我在 Ubuntu 上有一个目录,里面有 340K 张图片,总大小为 45GB!有没有一种有效的方法可以将它们全部传输到 S3 上数字海洋

我想过使用s3cmd puts3cmd sync,但我猜那会对put每个文件单独执行操作。

任何想法都将不胜感激!

答案1

我不相信 S3 API 允许您在一次 API 调用中提交多个文件,但您可以研究您正在使用的客户端的并发选项。

一个好的起点是官方 AWS 命令​​行界面 (CLI)其中有一些S3 配置值它允许您调整aws s3 CLI 传输命令的并发性,包括cp、、和:syncmvrm

max_concurrent_requests - The maximum number of concurrent requests (default: 10)
max_queue_size          - The maximum number of tasks in the task queue (default: 1000)
multipart_threshold     - The size threshold the CLI uses for multipart transfers of
                          individual files (default: 8MB)
multipart_chunksize     - When using multipart transfers, this is the chunk size
                          that the CLI uses for multipart transfers of individual
                          files (default: 8MB)
max_bandwidth           - The maximum bandwidth that will be consumed for uploading
                          and downloading data to and from Amazon S3 (default: None)

上面链接的 AWS S3 配置指南还包括针对不同场景调整这些值的建议。

为了加快传输速度,您还应该在 Digital Ocean 实例延迟最小的区域中创建 S3 存储桶,或者考虑启用S3 传输加速。如果您使用 S3 加速,则有额外的 CLI 选项(和成本)。

设置配置选项后,您可以使用如下命令行aws s3 sync /path/to/files s3://mybucket将图像目录从 DigitalOcean 服务器递归同步到 S3 存储桶。同步过程仅复制新文件或更新的文件,因此如果同步中断或源目录已更新,您可以再次运行相同的命令。

相关内容