将大数据从液滴同步到数字海洋空间(S3)

时间:2019-03-22 16:30:43

标签: ubuntu amazon-s3 digital-ocean rsync s3fs

我的Web项目静态文件夹的大小约为10 GB,并存储在Digital Ocean Droplet中。今天,我试用了Digital Ocean Space,当时的想法是将所有存储文件复制并同步到新空间。

我的第一种方法是从安装文件夹开始。

我在主目录中创建了.passwd-s3fs文件,并添加了文本space_name:space_key:space_secret

然后我通过命令安装了s3fs软件包:

apt-get install s3fs

var中创建了用于安装的新存储文件夹:

s3fs space_name /var/storage -ourl=https://ams3.digitaloceanspaces.com

最后使用rsync我开始将文件同步到我的空间

rsync -av --stats --progress /var/www/project/static/* /var/storage

好吧,同步开始了,但是很慢。

例如,如何同步pdf文件:

static/demo.pdf
        812,707 100%  194.60kB/s    0:00:03 (xfr#1, ir-chk=3084/3086)

首先同步静态文件夹中的文件。 但是30分钟过去了,DO空间中的文件夹仍然是空的。外壳没有任何错误。

也许还有另一种明智的方式可以将我的Droplet静态文件迁移到Space?

1 个答案:

答案 0 :(得分:2)

在我留下澄清的评论之前,我将解释两种选择。 DigitalOcean Spaces使用Ceph RGW作为S3实现,但此处的答案适用于DigitalOcean Spaces和AWS S3。

免责声明:我专门研究DigitalOcean Spaces,因为它是Ceph的部署。

S3上的文件系统

这就是您现在正在执行的操作,有多种选择,例如s3fss3fs limitations页面涉及S3上文件系统的一些问题。

这里的主要缺点是,它可以在文件系统中公开,并且通常可以直接将其插入应用程序中,而无需修改应用程序。根据一致性和POSIX的不同,它可能会中断,并且由于受到S3延迟的限制,并且往返很长,因此速度很慢。

主要缺点是,您经常需要使用相同的原始工具作为文件系统来再次访问内容,并且并非总是直接可用,就像您将内容复制到网络服务器上一样。

原生S3

如果不需要像本地文件系统中一样透明地打开S3内容的程序,一个更好的选择是在本机方法中使用S3。使用s3cmdrclone(非常快)上传您的内容,并将其更像是静态内容的Web服务器,而不是本地文件系统。除非您确实希望将其公开,否则请勿将其设置为公开内容;如果不希望数据在直接控制后仍未加密,则可以考虑使用SSE-C对数据进行加密。

另一个主要提示是,您应尽量减少从液滴到Spaces端点的延迟。选择最接近液滴的空间。