[原创] 图床从七牛云迁移到腾讯 COS 折腾笔记

引子

我用的是七牛图床,最近写博客发现图片能上传,但是获取外链地址时出现 [5402] 获取 bucket 域名失败,导致图片无法使用外链地址。后面上网一查,才发现是测试域名被收回了。


此时心中一万个不爽!官方解决方法就是要绑字一个已备案的域名来替代。一个博客而以,还要用到网站备案嘛?所以我打算找替代方法,将图床迁移出。比较了国内几个比较知名的站(又拍云,新浪相册,yupoo)。最后选择了腾讯 COS。

正文

因为我使用的系统是 debian。所以下文是以 linux 为系统环境的。
在网上找了一些关于七牛云迁移到腾讯 COS 的文章,执行起来几乎都有问题。这里我把折腾的迁移方案记录下来,给大伙一个参考!

使用 qshell 转移 bucket 文件到另一个 bucket.

文档说明:命令行工具 (qshell)

1
2
3
wget http://devtools.qiniu.com/qshell-v2.3.0.zip?ref=developer.qiniu.com   #下载qshell
unzip qshell-v2.3.0.zip\?ref\=developer.qiniu.com #解压缩qshell
mv qshell_linux_x64 qshell #重命名qshell命令

有了这个命令行工具,还需要知道七牛的 AKSK七牛用户名


运行命令:

1
./qshell account <AK> <SK> 七牛用户名


运行之后确认是否成功!

1
./qshell user ls

然后导出 bucket 文件信息

1
2
./qshell listbucket blog > kkk.txt    #blog是我的储存空间名,需要改成自己的。
cat kkk.txt | awk '{print $1}' > list.txt #格式化文件信息,切割出文件名。

接着先在七牛云上,再新建一个储存空间 temp

将文件转移到储存空间 temp 上。

1
./qshell batchcopy blog temp -i list.txt

把过期的文件列表搬迁到新的存储空间,会出现让输入一个确认字符串,照着输入就行。

批量下载到本地

因为要迁移到腾讯 COS,自然要把图片下载下来,不过在网页端只能一张张图片下载,还好 qshell 提供了 qdownload 可以批量下载文件,不过官网给出的 api 文档特别标注了,这个接口默认是要收费的:配置【该功能默认需要计费,如果希望享受 10G 的免费流量,请自行设置 cdn_domain 参数,如不设置,需支付源站流量费用,无法减免!!!】

相关文档:qdownload

什么要收费!?

收费是不可能收费的,这辈子都不可能收费的!
先运行下面的命令

1
2
mkdir /mnt/qldownload
nano batch_download.conf

将下面的内容复制进去,然后保存退出。

1
2
3
4
5
6
7
8
9
10
11
12
13
{
"dest_dir" : "/mnt/qldownload",
"bucket" : "temp",
"prefix" : "",
"suffixes" : "",
"cdn_domain" : "http://pgiolcvny.bkt.clouddn.com",
"referer" : "",
"log_file" : "download.log",
"log_level" : "info",
"log_rotate" : 1,
"log_stdout" : false

}

注意:”cdn_domain” 后面的地址要改成你自己的。
注意:”cdn_domain” 后面的地址要改成你自己的。
注意:”cdn_domain” 后面的地址要改成你自己的。

下面是”cdn_domain” 地址的截图,根据自己的来修改。

运行命令下载图片资源

1
./qshell qdownload -c 10 batch_download.conf 

正常的话,图片就会下载到 /mnt/qldownload 这个目录下了。

上传到腾讯 COS

把所有的文件下载下来之后,然后还需要把文件上传到 COS,这样图片才可以作为资源被外部访问,如果你之前没有使用过对象存储服务,还需要先创建一个存储桶,记住权限要设置成对外可读 (不然别人也访问不了), 然后把这些文件上传到这个存储桶里边,这个在网页上就可以直接操作,可以批量把刚才下载的都上传了。官方也有文件管理软件 COS Browser,上传下载图片还是挺方便的。
首先在腾讯 COS 上新建一个存储桶,访问权限设置成公有读私有写

进入密钥管理

新建密钥

下载安装 COS Browser
登陆介面输入 SecretldSecretKey

将刚才下载的图片资源上传到腾讯 COS

批量替换博文里七牛云链接

到这就剩最后一步了,将原来博客里的七牛云的图片链接全部替换成腾讯 COS 的域名。老域名可以看你自己的博客文件,例如我的是 http://7xn9y9.com1.z0.glb.clouddn.com, 然后新的域名可以直接在腾讯云控制台,点开一张你上传过的图片查看,我的是 https://blog-1254094716.cos.ap-chengdu.myqcloud.com. 具体的文件名因为都是一样的编码方式,所以只用替换域名就行,这里可以用 sed 命令来批量操作。
进入自己的博客主目录运行

1
2
cd source/_post 
sed s#(http://7xn9y9.com1.z0.glb.clouddn.com#(https://blog-1254094716.cos.ap-chengdu.myqcloud.com#g *.md

替换时,先不要加 -i 参数,等确认替换的内容没有问题之后再添加 -i 进行替换。

1
sed -i s#(http://7xn9y9.com1.z0.glb.clouddn.com#(https://blog-1254094716.cos.ap-chengdu.myqcloud.com#g *.md

备注: 之所以替换的链接带上 (是为了防止误伤,比如这边文章里就有七牛的域名链接地址,但是图片链接在 MarkDown 写法里都是放在括号里的,所以记得这么替换就行)

至此已全部完成迁移!