复制到大型目录时,AWS S3 Sync非常慢

Kin*_*ede 14 amazon-s3 bigdata amazon-web-services aws-cli

使用AWS-CLI将数据同步到S3中的空目录时,几乎是即时的.但是,当同步到一个大目录(几百万个文件夹)时,甚至需要很长时间才能开始上传/同步文件.

有替代方法吗?看起来它试图在同步之前考虑S3目录中的所有文件 - 我不需要它,并且在没有事先检查的情况下上传数据就没问题了.

gar*_*aat 18

sync命令将需要枚举存储桶中的所有文件,以确定存储桶中是否已存在本地文件,以及它是否与本地文件相同.存储桶中的文档越多,所需的时间就越长.

如果您不需要此sync行为,只需使用递归复制命令,如:

aws s3 cp --recursive . s3://mybucket/
Run Code Online (Sandbox Code Playgroud)

这应该将当前目录中的所有本地文件复制到S3中的存储桶.

  • 危险!使用“aws s3 cp”最终可能会很昂贵,因为如果多次运行此副本,您将一遍又一遍地上传文件。更好的解决方案可能是继续使用“aws s3sync”,但增加“max-concurrent-requests”设置:https://docs.aws.amazon.com/cli/latest/topic/s3-config.html#最大并发请求数 (5认同)

spo*_*rch 6

如果您使用 S3 Tools 中的非官方工具s3cmd,则可以--no-check-md5在使用时使用该选项sync来禁用 MD5 和比较,以显着加快该过程。

--no-check-md5        Do not check MD5 sums when comparing files for [sync].
                        Only size will be compared. May significantly speed up
                        transfer but may also miss some changed files.
Run Code Online (Sandbox Code Playgroud)

来源: https: //s3tools.org/usage

例子:s3cmd --no-check-md5 sync /directory/to/sync s3://mys3bucket/