图床的选择从七牛云到腾讯云
昨天收到七牛云的邮件提醒说要回收我的 CDN 测试域名,博客一直使用七牛云的 bucket 作为图床,也就是说收了域名后,图片以及其它文件无法访问,最糟糕的是七牛云后台管理也无法访问文件,这才有了本文的内容,我要将七牛云对象存储转移到腾讯云的对象存储。
恢复七牛云文件
首先得恢复七牛云中文件的访问。七牛云提供的 qshell 命令行工具,可以管理对象存储空间,这里的思路就是新建一个对象存储空间,将原来用作图床的对象存储空间中的文件拷贝到新的对象存储空间中。
-
下载 qshell
-
下载到最新的 qshell 压缩包是
qshell-v2.3.0.zip
,解压得到:qshell-v2.3.0 ├── qshell_darwin_x64 ├── qshell_linux_x64 ├── qshell_linux_x86 ├── qshell_windows_x64.exe └── qshell_windows_x86.exe 0 directories, 5 files
-
进入到目录 qshell-v2.3.0 中,为了方便建立软连接
qshell
,这里使用的 macOS,所以软连接qshell_darwin_x64
$ cd qshell-v2.3.0 $ ln -s qshell_darwin_x64 qshell
-
-
登录账户
./qshell account <AK> <SK> <username>
<AK>
是 app key (个人中心->密钥管理中查看)<SK>
是 secret key (个人中心->密钥管理中查看)<username>
是你的七牛账户名
-
获取文件详细列表:
./qshell listbucket <原存储空间> > filelist.txt
<原存储空间>
是已经被回收 CDN 域名的对象空间的名称
-
切分出文件名称的列表:
cat filelist.txt | awk -F '\t' '{print $1}' > list.txt
-
去七牛云管理控制台,新建一个新的对象存储空间,这里命名为
backup
,新建完成后会看到空间分配了新的 CDN 域名,但是有效期只有一个月,这是要放弃七牛云的主要原因 -
将原空间的文件拷贝到新空间 backup 中:
./qshell batchcopy <原存储空间> backup -i list.txt
完成后,访问七牛云管理控制台中 backup 存储空间的内容管理就可以看到原来的文件了,都可以正常访问了。
下载文件到本地
qshell提供了qdownload可以批量下载文件,不过官网给出的api文档特别标注了,这个接口默认是要收费的:配置【该功能默认需要计费,如果希望享受10G的免费流量,请自行设置cdn_domain参数,如不设置,需支付源站流量费用,无法减免!!!】^[七牛测试域名回收迁移博客图床到腾讯云-批量下载到本地]。
呃。。。文件都是有外链的,所以十里用 python 写了一个下载七牛云对象存储空间文件的工具 qdownload。
打开七牛云管理控制台,找到新的存储空间 backup 查看 CDN 域名,使用 qdownload 下载文件到本地:
./qdownload <backup空间的CDN域名> list.txt -o pichome
<backup空间的CDN域名>
:新的存储空间 backup 查看 CDN 域名list.txt
:恢复七牛云文件 中第 4 步得到的文件列表文件
执行完命令,就会发现文件都下载到了 ~/Downloads/pichome
下了。
准备腾讯云COS
腾讯云COS^[在中国大陆地区,使用腾讯云 COS 标准存储的用户,每月可享受一定量的免费存储容量、免费流量、和免费请求。——免费额度]提供免费空间和每月有限的访问次数,但对于本博客来说足以。
-
访问腾讯云 COS 控制台,新建存储桶,只需注意权限选择 私有写公有读 即可。
-
访问云API密钥,新建密钥,新建成功后记下 SecretId 和 SecretKey
-
下载 COSrowser 工具,下载后打开工具,输入第二步的 SecretId 和 SecretKey,就可以管理存储桶里的文件了:
![](https://pichome-1254392422.cos.ap-chengdu.myqcloud.com/img/屏幕快照 2018-11-17 下午3.03.36.png)
上床文件到COS
进入 ~/Downloads/pichome
目录,也就是下载文件到本地中下载文件的目标目录,选中所有文件拖拽到打开的 COSrowser 窗口中,软件就会自动上传文件。
等上传完成后,随便找一个文件右键选中复制链接,就会得到文件一个完整的外部访问链接,分析链接记下连接中的域名。
更新博客源文件中资源链接
因为原来使用的是七牛云,也是固定使用一个域名的,所有文件从七牛云转存到腾讯COS,文件的相对路径是没变的,所以只需要替换原来的域名为现在腾讯COS分配的新域名即可,有很多方法,比如可以使用 sed 命令,我这里使用 vscode 的高级查找替换域名,在打开的文件夹下搜索所有文件中有原域名的位置,然后全部替换为新域名即可:
- 使用 vscode 打开博客文章的源文件目录,我使用的是hugo,所以打开存 md 文件的
content
目录 - 按
command
+shift
+h
打开高级替换的侧栏,上编辑框输入待查找的原域名,就会得到搜索结果 - 检查搜索结果没什么问题后,下边框输入新域名,点击全部替换按钮
- 启动博客渲染服务,打开本地的博客,所有的图片和文件访问正常
yeah, Done!