我的Web项目静态文件夹的大小约为10 GB,并且存储在数字海洋液滴中。今天,我尝试了数字海洋空间,想法是将所有存储文件复制和同步到新空间。
我的第一个方法从安装文件夹开始。
我在主目录中创建了.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空间中,文件夹仍然是空的。Shell中没有任何错误。
也许还有另一种明智的方法可以将我的静态文件迁移到太空?
等待我留下的澄清评论,我将解释这两个选项。Digitalocean Spaces使用CEPH RGW作为S3实现,但此处的答案适用于Digitalocean Spaces和AWS S3。
。免责声明:我专门在Digitalocean空间上工作,因为它是Ceph的部署。
filesystem-on-top-of-s3
这是您现在正在做的事情,有多种选择,例如s3fs
。S3FS限制页面涉及S3的某些问题。
这里的主要好处是,您可以将其暴露在文件系统中,并且可以将其直接插入应用程序,而无需修改应用程序。这可能会取决于一致性和POSIX,并且要慢一点,因为现在有很多圆形旅行。
。主要缺点是您经常需要相同的原始工具来再次访问内容作为文件系统,并且它并不总是像将内容复制到Web服务器上那样直接可用。
本机S3
如果您不需要像本地文件系统中的程序那样透明地打开S3内容,则更好的选择是在本机方法中使用S3。用s3cmd
或rclone
上传您的内容(很快),将其视为静态内容的网络服务器,而不是本地文件系统。除非您真的希望公开它,否则不要将您的内容设置为公开,并且如果您不希望它在立即控制之后未加密数据,则可以考虑使用SSE-C来加密数据。
另一个主要提示是,您应该尝试最大程度地减少从液滴到空间端点的延迟。选择最接近液滴的空间。