我的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?
答案 0 :(得分:2)
在我留下澄清的评论之前,我将解释两种选择。 DigitalOcean Spaces使用Ceph RGW作为S3实现,但此处的答案适用于DigitalOcean Spaces和AWS S3。
免责声明:我专门研究DigitalOcean Spaces,因为它是Ceph的部署。
S3上的文件系统
这就是您现在正在执行的操作,有多种选择,例如s3fs
。 s3fs limitations页面涉及S3上文件系统的一些问题。
这里的主要缺点是,它可以在文件系统中公开,并且通常可以直接将其插入应用程序中,而无需修改应用程序。根据一致性和POSIX的不同,它可能会中断,并且由于受到S3延迟的限制,并且往返很长,因此速度很慢。
主要缺点是,您经常需要使用相同的原始工具作为文件系统来再次访问内容,并且并非总是直接可用,就像您将内容复制到网络服务器上一样。
原生S3
如果不需要像本地文件系统中一样透明地打开S3内容的程序,一个更好的选择是在本机方法中使用S3。使用s3cmd
或rclone
(非常快)上传您的内容,并将其更像是静态内容的Web服务器,而不是本地文件系统。除非您确实希望将其公开,否则请勿将其设置为公开内容;如果不希望数据在直接控制后仍未加密,则可以考虑使用SSE-C对数据进行加密。
另一个主要提示是,您应尽量减少从液滴到Spaces端点的延迟。选择最接近液滴的空间。