Robotkang

欢迎走进我的世界

科技、生活、音乐、人生


将图床从七牛云迁移到腾讯COS

copyright 版权声明:本文为博主原创文章,未经博主允许不得转载。 原文地址:https://robotkang.cc/18116.html

最近发现博客里面的好多图片都不显示了,因为我用的是七牛图床,登录七牛一看,[5402] 获取 bucket 域名失败,说是测试域名收回了,导致我的图片都不显示了而且点击预览和下载都是没有反应的 。心中真是万般不爽。就像和多说迁移一样。解决办法就是再绑定一个已备案的域名替代,备案这种东西对于我没什么必要。所以我就打算把图床迁移到腾讯COS(腾讯的有一定的免费容量)上。

然后就折腾了下迁移方案,记录一下。

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

1.下载 qshell , 文档说明:命令行工具(qshell)

2.如果你希望可以在任意目录下使用 qshell,请将 qshell 工具可执行文件所在目录添加到系统的环境变量中。由于 Windows 系统是图形界面,所以方便一点。假设qshell_windows_x64.exe (我用的电脑环境:win7 64 位)命令被解压到路径 E:\jemy\tools 目录下面,那么我们把这个目录放到系统的环境变量 PATH 里面。

photos

3.更名 qshell_windows_x64.exeqshell.exe

4.qshell 是一个命令行工具,在 Windows 下面请先打开命令行终端,然后输入工具名称执行(不要双击打开,否则会出现闪退现象)。

5.添加账号: qshell account <AK> <SK>。(AK/SK 需要去 个人中心->密钥管理 看下你自己的)

6.导出 A bucket 文件信息: qshell listbucket A A.list.txt

7.格式化文件信息,切割出文件名: awk "{print $1}" A.list.txt > list.txt。
① 在使用命令和配置文件时,需要使用 “” 双引号,不能使用单引号。
② awk:[url]http://nchc.dl.sourceforge.net/project/gnuwin32/gawk/3.1.6-1/gawk-3.1.6-1-setup.exe[/url] ,安装后将 bin 加入PATH。

8.转移到 B bucket: qshell batchcopy A B list.txt。把过期的文件列表搬迁到新的存储空间,我这里会出现让输入一个确认字符串,照着输入就行

然后就可以在网页上的新的存储空间看到之前那些无法查看的文件了。不过还是丢失了歌曲和一部分图片。

批量下载到本地

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

相关文档:qdownload

主要是需要写个配置文件,并且记住,得配置下cdn_domain 这个参数,在本地新建一个配置文件 batch_download.conf

注意: 当使用 qdownload 等需要配置文件的命令时,不要使用 Notepad++ 等编辑器来编写配置文件,在本地右键默认新建一个文本文档来进行编写,编写完再改名为 batch_download.conf。

 
{
# Windows 平台下的文件路径需要写为\\的写法,如C:\\Users\\li\\Downloads
"dest_dir" : "/xxx/xxx/Downloads/qiniu",
"bucket" : "kang", (新建的 bucket 的名称)
"prefix" : "",
"suffixes" : "",
"cdn_domain" : "http://pgiolcvny.bkt.clouddn.com",(新建的 bucket 的测试域名)
"referer" : "",
"log_file" : "download.log",
"log_level" : "info",
"log_rotate" : 1,
"log_stdout" : false
}

运行命令(下载并发数表示可以同时下载10个文件):

qshell qdownload 10 batch_download.conf   

终端中就可以看到日志,然后在dest_dir路径中的文件夹里就可以看到你要下载的文件了。

上传到腾讯COS

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

控制台配置

注意有两个关键的配置不能忽略

  • 存储桶(bucket)访问权限
  • 防盗链设置

1、访问权限

访问权限应设置为公有读私有写。很好理解,我们是要用COS来做图床的,必然是需要获取文件的直接链接才行,所以不能在读取图片的时候设置权限。

2018-11-06-photos

权限设置文档在此: 访问权限应设置

2、防盗链

如果被盗链会导致你的免费额度可能会快用尽,因此防盗链也是需要考虑的。

下图以我的博客地址为例

2018-11-06-photos

开启之后即使其他人获取到链接也无法访问相应图片

注意:因为开启了防盗链这设置,因此当你在本地写博客的时候会出现图片无法预览的情况。因为防盗链机制只允许白名单中指定域名或IP访问。也就是说只能在博客中看

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

然后就只剩一步了,我们现在可以通过腾讯的COS来作为我们的图床服务,所以如果你写的新的博客,可以直接用新的地址,但是你之前写的那些博客,都是七牛的域名,所以需要把博客的原始文件里面的图片链接全部替换成腾讯COS的域名,老的域名可以看你的博客文件,例如我的是:http://7xn9y9.com1.z0.glb.clouddn.com,然后新的域名可以直接在腾讯云控制台,点开一张你上传过的图片查看,我的是:https://blog-1254094716.cos.ap-chengdu.myqcloud.com.具体的文件名因为都是一样的编码方式,所以只用替换域名就行,这里可以用sed命令来批量操作:

 
cd source/_post 

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

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

OK,到这儿就折腾的差不多了,还有部分的图片和音乐就手动替换吧。有时候免费的往往需要付出更多 ,道理不过如此。谨记,与我与你。


人呐,大抵都要一个特色鲜明的休止符,才能认真去接受,关于你和你的故事已经落幕。
所以,你还记得,茵色的云幕褪去,华灯初上,月色从窗边倾泻而下的那个隆冬。




R
支付宝打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者



Valine - A simple comment system based on Leancloud.