我正在尝试从本地源到S3存储桶进行文件同步,在这里我通过计算MD5校验和并将其放在每个文件的元数据中将文件上传到S3存储桶。问题是这样做时,我还检查了目标位置已经存在的文件,以避免重复上传。为此,我创建了一个要上传的文件列表,但文件名和MD5都不匹配。即时获取S3文件的元数据并为本地文件计算MD5,然后对其进行匹配的操作需要花费大量时间,因为我大约需要200000至500000个文件进行匹配。
是否有更好的方法可以通过使用多线程或其他方法来实现。我不太了解如何在多线程环境中实现它,因为我最终需要一个列表和多个线程来处理并添加到同一列表中。任何代码示例或帮助都将不胜感激。
此Windows作业应用程序是使用.NET 4.6.1框架以C#编写的。
答案 0 :(得分:1)
您可以使用AWS Command-Line Interface (CLI),它具有一个aws s3 sync
命令,该命令的执行与您所描述的非常相似。但是,对于数十万个文件,它在匹配时也将执行缓慢。
或者,您可以使用Amazon S3 Inventory - Amazon Simple Storage Service来获取S3存储桶中文件的每日列表(包括MD5校验和),然后将其与文件进行比较。