我有一个S3 bucket,每天从salesforce生成对象。我想将这些对象从S3 bucket复制到本地Linux服务器。一个应用程序将在该Linux服务器上运行,该服务器将引用这些对象来生成一个新文件。
我不能使用S3同步,因为S3桶中会有数十万个对象。由于这些对象将每天生成,同步将增加大量成本。我只想将新创建的对象复制到本地服务器。
我正在考虑使用S3FS或JuiceFS在本地安装S3 bucket。但我听说将S3安装到本地服务器不是一个可靠的解决方案。
有没有什么可靠和安全的方法可以让我们只能将新对象复制到本地服务器?此外,如果我使用S3FS或JuiceFS将S3安装到本地服务器,它是否可靠?
事先非常感谢。
您实际上可以将hadoop的distcp命令与-update选项一起使用;它不会下载本地的相同长度的文件(s3和其他存储之间没有校验和比较,所以相同长度被解释为不变。这可以从命令行本地运行;不需要集群。
hadoop distcp -update -numListstatusThreads 40 s3a://mybucket/path file://tmp/downloads
numThreads选项将目录扫描并行化,这听起来很重要,因为s3LIST只调用几千个返回页,需要时间和金钱。
参见https://hadoop.apache.org/docs/stable/hadoop-distcp/DistCp.html