七牛云回收测试域名后将图片下载到本地的解决办法

最近七牛云回收了测试域名,导致我在上面存的一些图片资源都访问不了。由于疏忽,之前没有注意到七牛云回收测试域名的邮件,导致现在在七牛云上也无法将图片资源下载到本地,传到其他的云上。
遂发起工单,终于找到了解决办法。

下载 qshell 和 qrsctl

使用七牛云的命令行工具 qshell下载地址,和命令行辅助工具 qrsctl下载地址

官方文档里有具体下载安装的步骤,我这边再讲下 mac 上安装的步骤
将下载后的 qshell 和 qrsctl 解压到自定义的目录,我解压到了 ~/Documents/tools
因为在 mac 中有权限的问题,先赋予它可执行权限,进入到该目录

1
chmod a+x qshell qrsctl

之后在 ~/.zshrc 里配置环境变量

1
2
export PATH=$PATH:/Users/kepeilin/Documents/tools/qshell
export PATH=$PATH:/Users/kepeilin/Documents/tools/qrsctl

保存后在命令行执行 source ~/.zshrc 是配置生效

登录账号

使用 qshell 和 qrsctl 分别登录你的账号

qshell 登录

进去七牛云官网的 个人中心 -> 密钥管理 获取你的公钥和私钥信息
name 是登录邮箱

1
qshell account ak sk name

登录后查看空间是否匹配

1
qshell buckets

qrsctl 登录

User 为你的登录邮箱,Passwd 就是密码

1
qrsctl login <User> <Passwd>

登录成功后查看个人信息是否匹配

1
qrsctl info

将图片下载到本地

qrsctl 只提供了一次性下载一张静态资源的接口

1
qrsctl get <Bucket> <Key> <DestFile>

Bucket 是空间名,Key 是文件名,DestFile 是本地的路径

可是对于拥有大量图片的人来说,这样一个个文件地下载,效率太低

批量下载图片

利用 qshell 的 listbucket 命令可以获得指定空间下的所有文件
我这边使用的空间名为 blog
在命令行执行

1
qshell listbucket blog | awk '{print $1}' >> files

files 的路径为 /Users/kepeilin/Documents/kpl/cdn-images/files
将七牛云空间里的所有文件名保存到 files 里
接着写一个 shell 文件批量下载图片, vim download.sh

1
2
3
4
for line in `cat /Users/kepeilin/Documents/kpl/cdn-images/files`
do
qrsctl get blog $line ./images/$line
done

回到 /Users/kepeilin/Documents/kpl/cdn-images 执行 ./download.sh
等到所有的 info 信息结束之后,所有的文件都被保存到 /Users/kepeilin/Documents/kpl/cdn-images/images 目录下

我们发现该目录下多了一些没用的文件,将它们删除

1
rm *.(jpg1|jpg2|jpeg1|jpeg2|png1|png2|gif1|gif2|pdf1|pdf2|mp41|mp42)

使用 sm.ms 取代七牛云

目前七牛云每次新建一个空间只能使用30天的测试域名,30天之后就会回收,除非绑定域名。而这个域名必须进行 ICP 备案,很遗憾我的域名是国外域名,而且 2018 年工信部发了通知今年开始国外域名无法进行 ICP 备案,所以只能放弃七牛云。

这边推荐一个免费的图床网站 sm.ms,无外链限制,无流量限制

不过由于没有区分用户,使用该图床不好管理自己的上传图片,所以我再安利一个图片管理工具 PicGo
windows,linux,mac版本都有,进入 github 依照自己的环境下载最新版本的 release 包即可