去年建立博客的时候,选择了七牛云存储来存放博客的图片,最近收到了七牛的邮件,之前一直在用的域名只是一个测试域名,再过一阵就要回收了,到时必须使用自己的域名。大概看了一下,申请自己的域名还要涉及注册于备案,我仅仅是需要存储图片,这样太费周章,所以决定把博客的图片从七牛迁移出来。经过一番查找,最后觉得使用腾讯云的对象存储 COS,由于我的图片量很少,所以就算付费,每个月实际的支出也不会太大。本文介绍一下图片迁移过程。

从七牛 bucket 下载图片

七牛提供了命令行工具 qshell 来对七牛存储进行操作,我们可以利用这个工具把 bucket 里面的图片全部下载到本地。对于 Mac 系统,下载以后解压文件,qshell_darwin_x64 即为可执行文件,为了方便后续操作,先建立 qshell 软链接,指向实际的可执行程序:

chmod u+x qshell_darwin_x64
ln -s qshell_darwin_x64 qshell

然后配置自己的账户:

qshell account <AK> <SK>

<AK><SK> 分别是自己的 access key and secret key,可以从七牛账户的个人面板的 密钥管理 模块查看。

qshell 提供了一个 qdownload 功能,可以批量从 bucket 下载图片,但是该功能的下载流量默认是收费的,如果想要免费,建立配置文件 qdownload.conf,一个示例配置内容如下:

{
    "dest_dir"   :   "/Users/jdhao/Documents/qiniu_bucket_files",
    "bucket"     :   "github-pages-image-storage",
    "prefix"     :   "",
    "suffixes"   :   "",
    "cdn_domain" :   "olvlcptdv.bkt.clouddn.com",
    "referer"    :   "",
    "log_file"   :   "download.log",
    "log_level"  :   "info",
    "log_rotate" :   1,
    "log_stdout" :   false
}

dest_dir 填写下载的图片存放路径,确保路径存在;bucket 填写你在七牛建立的 bucket 的名称;cdn_domain 填写七牛给的测试域名;其他信息可以不用填写。

配置文件填写好以后,使用下面命令下载 bucket 里面所有图片:

qshell qdownload qdownload.conf

程序运行结束以后,所有的图片就被下载到了指定的目录下面。

设置腾讯云对象存储

注册腾讯云,然后在对象存储里面建立一个存放博客图片的 bucket,注意权限要设置为 *公有读私有写*,这样别人访问博客的时候,才能看到图片。

Create a bucket

然后把刚才下载的图片全部上传到这个 bucket 里面,可以批量拖拽上传。值得注意的是,如果七牛 bucket 下有文件夹,那么拷贝到腾讯云,也要保持文件夹结构,否则替换到腾讯的域名以后图片将无法访问。

替换原有的图片链接地址

接下来,使用命令行工具或者带有正则表达式的编辑器,批量替换所有博客源代码中图片的地址,把七牛云的测试域名,替换为腾讯云存储的地址。创建的 bucket 的访问域名可以点击 基础配置 一栏,基本信息 部分有域名信息。

查看 bucket 对应的域名

另外,如果之前使用七牛时候使用了图像处理操作,原有图片链接中的图像操作部分也应该去掉。

图片上传工具

找了一圈,支持上传到腾讯云存储的有两个不错的程序,一个是iPic,另外一个是PicGo。iPic 免费版只能使用新浪微博图床,要使用其他图床,需要付费版,每年 $9.9,个人觉得太贵,不值这么多,所以放弃。PicGo 支持腾讯云,并且免费,正好满足需要。

具体配置可以参考官方 wiki。可以直接拖拽图片到 PicGO 的 menubar 图标实现图片上传,或者如果已经把图片拷贝到剪切板,使用默认的 Command + shift + P 快捷键上传图片,当然快捷键可以根据自己需求修改。

参考