七牛云很久前更改了政策,测试域名到期后必须绑定备案域名才能继续使用,这导致空间中的文件既不能通过外链下载,也不能通过管理后台下载。而且由于我的是.me域名,国内目前暂时无法备案,所以没办法,只能通过七牛的qshell把失效空间中的文件下载下来。


参考七牛云测试域名到期失效,下载空间文件办法一文,成功将文件下载并上传至自己的NAS中,从而利用公网ip+alidns+nas实现了一个私有无限制的图床。

一、在七牛控制台创建新空间

浏览器进入七牛云控制台,对象存储中新建一个空间,用来把域名失效空间内的文件拷贝进去。因为新建空间可使用测试域名,所以可以从新建空间下载原来的文件,曲线救国。

注意:新建空间一定要与域名失效空间在一个地区服务器上,否则无法拷贝进文件。

二、 安装七牛云官方命令行工具 QSHELL

从以下地址下载工具包:点击下载

解压后,得到的文件夹中存在对应三种操作系统的程序。

解压, 将 qshell-darwin-x64 放到 /usr/local/bin 或 ~/bin 下,更名 qshell-darwin-x64 为 qshell。

三、七牛账户密钥设置

使用 qshell 操作七牛空间,需要添加账户密钥 AccessKey 和 SecretKey, 赋予 qshell 权限。

1
qshell account #AccessKey# #SecretKey#

四、转移失效空间文件至新空间

使用listbucket命令列举出失效空间内的文件列表

命令用法:

1
qshell listbucket <Bucket> [<Prefix>] <ListBucketResultFile>

本例中命令如下:

1
qshell listbucket old cpt.txt

上述操作后会在当前目录下生成一个名为cpt.txt的list文件列表,而我们只需要得到最前的key就可以了,可以使用一条awk字符处理命令:

随后使用batchcopy命令将文件同步到需要复制的新空间中

1
qshell batchcopy old new cpt.txt

这一步会提示让你确认操作,输入他随机生成的英文就行了,例如:

1
2
3
4
5
qshell batchcopy old new cpt.txt

<DANGER> Input ditdxc to confirm operation: ditdxc

**ALL** Copyed!

五、从新建空间中下载所有文件

用如下命令将新建空间 new 中的所有文件同步至本地目录:

1
qshell.exe qdownload download.conf

其中 download.conf 为下载配置文件,在工作目录中创建,内容按如下填写:

1
2
3
4
5
{
"dest_dir" : "F:\\11",#注意是两条斜杆
"bucket" : "new",
"cdn_domain" : "######.bkt.clouddn.com"
}

注意:”cdn_domain”如果不配置为测试域名,则 qshell 下载文件不走 CDN 免费流量,需支付流量费。

执行下载命令后,稍等片刻,便能在本地下载目录中看到失而复得的文件。再上传到nas,因为文件名没变,批量修改博客中图片外链的前缀地址,图片就能恢复显示。