七牛云测试域名过期后新建空间转移失效文件

Posted by Harry on 2018-11-15
Words 1.1k and Reading Time 3 Minutes
Viewed Times

背景

8月份开始,邮箱里陆续出现了一些七牛云测试域名过期失效的邮件。一开始没怎么注意,直至最近我一公司同事告知我博客上的七牛云外链图片无法访问了才想起这件事来。既然测试域名过期了,那就再申请一个呗。可是,可恶的是竟然无法在原有空间继续申请测试域名,七牛云官方说辞如下:『七牛云测试域名是用户在创建云存储空间时系统自动生成的七牛域名』,所以原有空间必须绑定自定义域名才可以使用,而且连原有空间的图片已经无法进行外链预览和下载。可是自定义域名又需要是在国内备案通过的域名,这对于大部分借助第三方平台搭建博客的人来说是不太科学的情况,国内备案域名既需要购买域名,也需要购买主机才能申请备案。

那么是否可以新建空间之后(携带测试域名),将失效空间的文件转移过去进行访问呢。答案是有的,但必须借助命令行,无法通过七牛云界面进行转移。当然,这样做的代价也是有的:

  1. 测试域名只有一个月有效
  2. 转移文件之后需要更新博客所有的图床域名
    但好在所有的操作都可以通过命令行完成,批量处理下原文件还是可以很快地完成操作的。以下是我的实践方案。

新建空间

首先我们需要新建新的空间,来确保有新的测试域名可以使用,这一步只需要通过七牛云的界面进行操作就可以了。此处不进行详述。

下载 qshell 工具并进行初始配置

最开始的时候我们提到需要使用命令行工具来将失效空间的文件转移到新空间的操作,因为这一步在七牛云的控制台界面上是没有提供转移文件的操作的。所以我们下载七牛云官方提供的 qshell-v2.3.0 工具包。解压下载后的压缩文件,我们可以发现文件夹内有各个平台的可执行文件,由于我使用的是 mac,此处用到的是 qshell_darwin_x64
接着我们按照官方文档进行配置:

1
2
3
4
5
$ cd qshell
# 配置文件权限
$ sudo chmod +x qshell_darwin_x64
# 在密钥管理处获取 ak/sk, name 为用户名
$ ./qshell_darwin_x64 account ak sk name

导出失效空间所有文件名

我们需要获取所有的文件名(携带后缀)以便在下一步的时候将所有文件拷贝至新的空间下。

1
2
3
4
# 将原空间下的所有文件路径输出到 allfilepath.txt
$ ./qshell_darwin_x64 listbucket old_bucket > allfilepath.txt
# 移除路径前缀并将只包含文件名的列表保存到新文件中
cat allfilepath.txt | awk -F '\t' '{print $1}' > allfilename.txt

拷贝失效空间所有文件到新空间下

1
2
# batchcopy 命令用来将一个空间中的文件批量复制到另一个空间
$ ./qshell_darwin_x64 batchcopy old_bucket new_bucket -i allfilename.txt

注意:批量拷贝后并不影响旧空间,所以可以手动通过将旧空间删除

更新博客图片域名

博文那么多当然不能自己打开文件一个一个进行替换,充分利用命令行来进行批量处理。批量替换后,同步最新的博客文档到服务器上就可以了。

1
2
# 将当前目录下的所有 md 文件中的 http://aaa.com 替换为 http://bbb.com
$ sed -i '' 's#http://aaa.com#http://bbb.com#g' *.mdah

关于效率

此解决方案麻烦的地方就在于每个月需要进行一次操作,但按我实际的操作时长,差不多 10 分钟内就可以搞定了。所以,天底下没有免费又不需要付出的解决方案,要么花钱,要么出力😭。

文末

当然这样的方案毕竟也不是长久之计。因此,域名备案已经在路上了😂,毕竟有台服务器除了放博客之外还可以搞搞其它的。


This is copyright.