使用S3作为存储的FTP服务器



我正在尝试创建一个ftp服务器(使用windows/linux/mac -不关心),它的存储作为亚马逊S3存储。现在请注意,S3本身不支持FTP,因此需要某种破解方法作为解决方案。

我研究了这个话题,找到了各种解决方案,但我真的不相信其中任何一个。他们是:

  1. Amazon EC2 + TntDrive
  2. 使用中小企业
  3. 创建EC2实例,安装FTP服务器,并将S3挂载为本地文件系统。

我正在努力寻找安全性和灵活性/流畅性方面的最佳解决方案。你认为哪种解决方案是最好的,如何实现上述目标?

编辑1:

我对下面的解决方案很感兴趣。我的理解是:您可以将EBS卷附加到EC2实例上,并在该实例上运行FTP服务器。将FTP服务器指向附加的EBS卷,然后通过FTP启动您的文件—它将直接写入EBS卷。您可能希望使用能够支持恢复中断传输的FTP服务器和客户端—例如FileZilla。当我假设以上所有情况时,我是否正确?

也可以有人给出一步一步的程序如何实现这一点?

答案要看情况。

首先,让我说FTP是一个可怕的和不安全的协议。在走这条路之前,确保你有一个很好的理由。有很多用户友好的S3工具。

其次,请注意这些解决方案中的都不会像S3那样扩展。每个解决方案对它可以支持的文件数量、文件大小以及如果文件频繁更新会发生什么(即可能保存错误的版本)都有任意限制。S3文件系统一开始看起来很整洁,但是当它们出现问题时,它们很难排除故障(它们只能返回一般的文件系统错误消息),而且更难修复。

的一些想法:

  • 如果您真的只想要云备份,请考虑使用EBS而不是S3。要么将EBS驱动器附加到EC2机器上,要么在本地机器上运行Storage Gateway。

  • 取决于读/写模式和延迟,以及文件的大小等,您可能会使用s3sync之类的东西。让它下载你所有的文件,然后定期双向重新同步到S3,以拾取任何新文件或删除任何已在S3中删除的文件。

  • 如果您只需要支持上传,只需创建一个cron作业,定期将新文件上传到S3,然后删除它们。

你可以试试…使用s3fs,将s3存储桶挂载到Amazon EC2实例中的一个目录—使用:sudo s3fs -o allow_other,uid=12345,gid=12345 my-bucket my-ftp-directory/

然后设置vsftpd或其他FTP程序,创建一个用户,并将其主目录指定为my-ftp-directory的主目录。将该用户Chroot到此目录,然后尝试使用用户凭据和EC2实例的ip进行FTP操作。我还没有尝试过,但是在使用这种技术将一个bucket挂载到Drupal中的公共文件目录后,它工作得很好!

您也可以使用:FTP 2 Cloud

当FTP 2 Cloud处于测试阶段时:

it's free.
there are no copy limits.
each account has 100MB storage space.
supports FTP to Amazon S3 copy.
supports FTP to Rackspace copy.
you use at your own risk.
it needs your love to get the word out.

最新更新