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

Sco*_*oby 9 ftp sftp amazon-s3 amazon-web-services ftp-server

我正在尝试创建一个ftp服务器(使用windows/linux/mac - 无关紧要),它将其存储作为Amazon S3存储.现在请注意,S3本身不支持FTP,所以这需要某种黑客作为解决方案.

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

  1. 亚马逊EC2 + TntDrive
  2. 使用SME
  3. 创建EC2实例并安装FTP服务器并将S3安装为本地文件系统.

我试图在安全性和灵活性/平滑性方面找到最佳解决方案.您认为哪种解决方案最好,如何实现上述目标?

编辑1:

我对以下解决方案非常感兴趣.这是我收集的内容:您可以将EBS卷附加到EC2实例并在该实例上运行FTP服务器.将FTP服务器指向附加的EBS卷,然后只需FTP文件 - 它将直接写入EBS卷.您可能希望使用可支持恢复中断传输的FTP服务器和客户端 - 例如,FileZilla.当我假设以上所有内容时,我是否正确?

谁也可以给出一步一步的程序如何实现这一目标?

Bra*_*ncy 9

答案真的取决于.

首先,我要说FTP是一个糟糕且不安全的协议.沿着这条路走下去,确保你有充分的理由.有很多用户友好的S3工具.

二,请注意,没有这些解决方案的规模会像S3一样.每个解决方案都有任意限制它可以支持多少文件,文件有多大,以及如果文件经常更新会发生什么(即它可能会保存错误的版本).S3 Filesystems一开始看起来很整洁,但是当它们遇到问题时,它们很难排除故障(它们只能返回通用文件系统错误消息)并且难以修复.

一些想法:

  • 如果您真的只想要云备份,请考虑使用EBS而不是S3.将EBS驱动器连接到EC2盒,或在本地盒上运行Storage Gateway.

  • 根据读/写模式和延迟,以及文件的大小等,您可能会使用类似的东西s3sync.下载所有文件,然后定期双向重新同步到S3以获取任何新文件或删除在S3中删除的任何文件.

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


wil*_*wen 5

您可以尝试使用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 ..我还没有尝试过,但是在使用这种技术将一个桶安装到Drupal的公共文件目录后,它是工作得很好!