复制到大目录时 AWS S3 Sync 非常慢
AWS S3 Sync very slow when copying to large directories
使用 AWS-CLI 将数据同步到 S3 中的空目录时,几乎是即时的。但是,当同步到一个大目录(几百万个文件夹)时,需要很长时间才能开始上传/同步文件。
有其他方法吗?看起来它在同步之前试图考虑 S3 目录中的所有文件 - 我不需要那个,并且在不事先检查的情况下上传数据就可以了。
sync
命令需要枚举bucket中的所有文件,判断bucket中是否已经存在本地文件,是否与本地文件相同。存储桶中的文档越多,所需的时间就越长。
如果您不需要这种 sync
行为,只需使用递归复制命令,例如:
aws s3 cp --recursive . s3://mybucket/
这应该会将当前目录中的所有本地文件复制到 S3 中的存储桶中。
如果您使用 S3 工具中的非官方 s3cmd
,您可以在使用 sync
时使用 --no-check-md5
选项来禁用 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.
示例:s3cmd --no-check-md5 sync /directory/to/sync s3://mys3bucket/
使用 AWS-CLI 将数据同步到 S3 中的空目录时,几乎是即时的。但是,当同步到一个大目录(几百万个文件夹)时,需要很长时间才能开始上传/同步文件。
有其他方法吗?看起来它在同步之前试图考虑 S3 目录中的所有文件 - 我不需要那个,并且在不事先检查的情况下上传数据就可以了。
sync
命令需要枚举bucket中的所有文件,判断bucket中是否已经存在本地文件,是否与本地文件相同。存储桶中的文档越多,所需的时间就越长。
如果您不需要这种 sync
行为,只需使用递归复制命令,例如:
aws s3 cp --recursive . s3://mybucket/
这应该会将当前目录中的所有本地文件复制到 S3 中的存储桶中。
如果您使用 S3 工具中的非官方 s3cmd
,您可以在使用 sync
时使用 --no-check-md5
选项来禁用 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.
示例:s3cmd --no-check-md5 sync /directory/to/sync s3://mys3bucket/