如果你在其他平台看到这篇文章,这可能不是最终版本。为了获得更好的阅读体验(包含最新的评论讨论和勘误),欢迎移步原文

最近写博客的时候大量上传了很多图片到我的 github 图床里,这种打擦边球的行为实际上是违反了 github 用户条例的,再加上今年 github 的基础设施状态疑似不是很好,以及前阵子我的小号有被封号的惨痛经历,这让我开始下定决心要转移我的图床。

8dc8caf1b137b1db4055283c5b0c8be6_720.png

既然决定要换,那就先来调研一下目前市面上有哪些可选方案。

方案调研

付费方案

对象存储

各家云厂商的付费方案大同小异,核心都是将资源托管在对象存储(如 OSS / S3)中,再通过 URL 进行外链访问。好处是你可以再接一个 CDN 资源给国内访问做加速,这样国内也能正常加载。坏处也比较明显:

  • 要钱
  • 不续费也不备份的话,图片就会消失,而且存储下线后,图片的映射关系就丢了
  • 如果需要自定义访问域名则需要备案
    • 这个问题倒还行,因为我之前因为折腾 cardconjurer 这个项目,已经完整地走过一遍阿里云 OSS 的方案流程了

主机跑文件服务器

这种方案就更小众了,你需要一台独立的服务器来搭建文件服务,并需要公网 IP 来提供访问入口。两相比较,它的维护成本和技术门槛甚至高于对象存储,实在不够省心。

免费方案

Github 仓库

也就是我们现在在用的这种方案

  • 优势:部署简单,没啥复杂度
  • 缺陷:有违规风险,国内访问没 CDN 加速,不挂梯子图片基本上加载不出来

Cloudflare

Cloudflare 是知名大善人了,经常提供各种免费资源供大家白嫖,这里也是经过一番调研,发现 cloudflare 提供了 10GB 的免费存储空间,并且每个月支持 100万次的写入操作,1000万次的下载操作,这诱人的免费额度还要什么自行车?于是我也是毫不犹豫地选择了这个方案。

实施

这里去 cloudflare 里激活一下 R2,然后配置一下秘钥以及域名相关配置

然后去配一下相关的秘钥,就大功告成了

接下来要做的就是迁移了

迁移

我这里迁移其实很简单,本地开任意的 agent,让其读一下 github 图床仓的结构,然后写个脚本调用 picgo 工具照搬到 R2,一切就解决了。

参考