博客图床迁移

博客搭建的时候选择了七牛云作为图床,到目前为止往上传了大概 100 张图片。近日收到七牛云测试域名回收的通知,只好另选其它云存储作为博客图床,网络上已有图床迁移方法,遂参考并记录于此。

0x01 下载图片

七牛云提供命令行工具 qshell 操作对象存储,可以使用该工具将已有数据同步到本地。

1. 密钥设置

首先需要设置密钥,密钥 aksk 可在“个人面板/密钥管理”中查看。

1
$ qshell account ak sk

2. 同步数据

使用 qdownload 命令可将图片同步到本地,该功能是收费的,但是通过设置 cdn_domain 参数可免费使用 10G 的流量。该命令使用方法如下,其中 LocalDownloadConfig 为本地下载的配置文件。

1
$ qshell qdownload [<ThreadCount>] <LocalDownloadConfig>

为能使用免费流量,新建如下配置文件,其中 bucket 为存储空间名称,cdn_domain 为需同步存储空间的外部默认域名。

1
2
3
4
5
6
7
8
9
10
11
12
{
"dest_dir" : "/home/lc/Desktop/images",
"bucket" : "hexo",
"prefix" : "",
"suffixes" : "",
"cdn_domain" : "http://ooyovxue7.bkt.clouddn.com",
"referer" : "",
"log_file" : "download.log",
"log_level" : "info",
"log_rotate" : 1,
"log_stdout" : false
}

命令执行完后,所有图片将下载到 dest_dir 设定的目录中。

0x02 腾讯云 COS

1. 上传图片

首先创建存储空间,并设置访问权限为公有读私有写,创建好后将下载的图片批量上传至 COS。为方便替换已有文章中图片链接,应保留七牛云中数据的文件夹结构。

此外,为了防止盗链导致免费流量被耗尽,需要设置防盗链,将博客域名加入白名单中。但设置之后,本地文章中无法正常访问图片,所以酌情设置该功能。

2. 修改链接

将图片上传到腾讯云 COS 之后,即可正常访问这些图片。接下来需要修改已有文章中的图片链接,将链接中的七牛云域名 old_domain_name 替换为腾讯云域名 new_domain_name(在“基础配置/访问域名”中查看),下面使用 sed 命令进行批量修改。

1
sed -i 's#($old_domain_name#($new_domain_name#g' /path_to_blog/source/_posts/*.md

所有链接修改完后,博客图床迁移便完成了。

0x03 PicGo

PicGo 是一款图片上传工具,可支持多种图床,其中包括腾讯云 COS。配置方法参看 官方文档,由于主账户权限较大,基于安全考虑,建议新建一个子账户,并对该子账户只授予 COS 读写权限,具体设置方法参考 使用子账号对 COS 进行授权


References:
[1] 七牛测试域名回收迁移博客图床到腾讯云
[2] 把博客图床从七牛云迁移到腾讯云