/ Cloud

使用七牛做图床的备份和应急方案

个人博客,图片是一项非常大的流量支出,尤其是对于速度本来就缓慢的境外服务器,将大部分静态资源托管在境内的CDN上是比较好的做法。

但一旦选定一个CDN服务商作作为博客的图床,就面临被其绑定的风险。

下面就以七牛+Ghost为例,对备份和应急方案做一个介绍:

关于备份和应急方案指,指在七牛停止服务时,可以在短时间解除博客对七牛托管图片依赖,并快速迁移。所以:

  1. 上传七牛的图片,在自己的服务器同时有保留。(手中有粮,心中不慌)
  2. 所有博客里引用的七牛图片,必须很容易的切换为自己的服务器。

具体来说:

  1. 图片在上传七牛时,要遵守命名规则,比如必须在 content/qiniu/目录下。这样所有的图片链接类似:
    http://ok4jsyu7n.bkt.clouddn.com/content/qiniu/images/xxx.jpg
  2. 后台定时备份。备份程序读取Ghost博客的数据库,提取用到七牛云存储的URL,全部遍历下载一遍(可以做成增量备份),并按照相同的路径存储到服务器,比如xxx.jpg就放到本地的某备份路径:/home/baackup**/content/qiniu/images/xxx.jpg**
  3. 事先准备一个程序,可以很容易将博客数据库里所有七牛图片的URL,切换回自己的域名http://imshuai.com/content/qiniu/images/xxx.jpg,并拉取备份到博客对应路径。
    一旦七牛云存储出现问题无法正常服务,只要运行此程序即可立即恢复正常访问。

当然,对于上面的第3步,可以做优化为实现准备一个静态资源的URL,比如img.imshuai.com,直接用CNAME的方法指向七牛的CDN地址ok4jsyu7n.bkt.clouddn.com,这样就不用切换数据库里的URL了。但是第1和2步定期备份七牛图片的步骤还是不可少的。

不过,经过我的验证,七牛的CNAME默认是无法指向的,必须是经过后台配置,并要求源域名在中国大陆备案,所以我还是要用前者的方案。

上述方案的程序,将在后续提供。

使用七牛做图床的备份和应急方案
Share this