如何将 AWS S3 存储桶与远程非 AWS 服务器上的文件同步?

Posted

技术标签:

【中文标题】如何将 AWS S3 存储桶与远程非 AWS 服务器上的文件同步?【英文标题】:How do I sync an AWS S3 bucket with files on a remote non-AWS server? 【发布时间】:2019-04-11 14:32:38 【问题描述】:

我想将 AWS S3 存储桶与远程非 AWS 服务器上的文件同步。我对远程服务器和有权访问 S3 存储桶的 EC2 实例都有适当的访问权限。最好的方法是什么?

我查看了 aws s3 sync 命令的文档,看起来您只能将 S3 存储桶与可以访问 S3 存储桶的服务器上的本地文件同步。

问题是,我在远程服务器上有文件要与 S3 存储桶同步,但该服务器不是 AWS EC2 实例。

我可以使用rsync 命令将文件从远程服务器获取到可以访问 S3 存储桶的 AWS 服务器上,但是如果我先执行 rsync 命令,然后执行 aws s3 sync 命令,那么移动文件就变成了一个两步过程,大约需要两倍的时间,而且由于文件很多,我还必须增加 EC2 实例卷的大小才能一次处理所有文件。一切都不理想。

因此,有没有办法通过使用可以访问 S3 存储桶的 EC2 实例将 S3 存储桶与不是 AWS 服务器且无权访问 S3 存储桶的远程服务器同步中介?谢谢。

【问题讨论】:

【参考方案1】:

最简单的方法是使用sshfs。 This link有详细说明,但基本流程如下:

    创建一个用于挂载远程系统的本地目录,例如/tmp/syncmount 运行sshfs USER@REMOTE:DIRECTORY /tmp/syncmount 运行s3sync /tmp/syncmount s3://YOUR_BUCKET

我假设如果您拥有rsync 访问权限,那么您将拥有常规 SSH 访问权限。

【讨论】:

以上是关于如何将 AWS S3 存储桶与远程非 AWS 服务器上的文件同步?的主要内容,如果未能解决你的问题,请参考以下文章

基于AWS S3协议搭建个人云存储服务

将数据从aws s3导入mysql或任何非aws数据库

如何让 AWS S3 存储桶中的 Angular 应用程序对 AWS Elastic Beanstalk 中的服务进行 API 调用

【Minio】基于AWS S3协议搭建个人云存储服务

如何将 AWS DynamoDB 表导出到 S3 存储桶?

AWS Lambda使用S3