导出七牛云内对象存储的数据

2019-12-31 11:57:30 浏览数 (1)

大概半年多以前,七牛云就失效了,一个是欠费再一个是没有绑定域名,听说是七牛云被举报了然后就必须要实名认证了,而且测试域名的时间也变得只有一个月之久,基本没什么作用了。如果绑定域名,需要该域名是备案的域名,这对于大部分自建博客的人来说基本就是死路一条了,备案的个人博主还是比较少的。

如上,我自然是没法再访问对象存储里的数据了,不过比较欣慰的是七牛云并不会删除上传的数据,数据仍然在相关的 bucket 里测试域名被回收了,现在要做的就是将数据导出,然后使用其他方案,例如阿里的oss或者自己服务器上,无论如何,将数据从七牛云导出是最重要的,但恶心人的是:七牛云的控制台里没有导出的功能,执行导出要借助额外的工具,全部工具列表如下:

https://developer.qiniu.com/kodo/tools/1302/qshell

这里我们使用 qshell,在命令行完成原数据的下载

准备工作
  • 下载 qshell qshell 是一个命令行工具,在 Win 系统下就是个 exe 可执行文件,官方教程还要配置环境变量,其实直接输入该 exe 名称运行也可以。
代码语言:javascript复制
需要在该文件的目录内
$ ./qshell-windows-x64-v2.4.0.exe -v
  • 配置密钥

在七牛云的web控制台中,个人中心里的密钥管理,可以找到自己的 AK 和 SK,帐号名称即用户名。

代码语言:javascript复制
$ ./qshell-windows-x64-v2.4.0.exe CBVEWIVBOI82391091231 284VSHDUAVBU98-vgyhsd 1805984583@qq.com
该语句执行完无输出
利用新空间的测试域名

由于没域名,用 qshell get 下载总是失败,或许不是域名的原因,但总归是卡住了,找了半天找到了可行的新方案,即:

实名认证 -> 新建Bucket -> 转移空间内的数据 -> 用新空间的测试域名下载

还是不用备案的域名,符合我的预期,认证也比较简单,上传身份证然后支付宝搞一下就行了,说是三个工作日审核其实完成认证操作后马上就能新建Bucket了,新建完后,记住新空间的名字,下面用 batchcopy 来完成移动。

注意:新建的空间要和原空间在同一个大区内。

  • 获得文件名列表 这里使用 listbucket 命令,将输出存到文件中,利用 awk 直接取出第一列即可(强烈推荐使用 git bash 运行,大家应该都有)。
代码语言:javascript复制
$ ./qshell-windows-x64-v2.4.0.exe listbucket whereareyou > tocopy.txt
只有一个参数即:空间名称
其会列出该空间内的全部文件,带文件夹路径

$ cat tocopy.txt | awk '{print $1}' > only-name.txt
去掉上面输出文件中的其他无关项,只留文件名
  • 执行 batchcopy 其仍属于 qshell 内的命令,是个批量拷贝命令,输入是个文件名构成的文件,可以用 –forece 强制移动。
代码语言:javascript复制
$ ./qshell-windows-x64-v2.4.0.exe batchcopy --force whereareyou zonelyn -i only-name.txt
参数分别是:旧空间名,新空间名,移动文件的名称列表
...
Copy 'whereareyou:image/acger/app.png' => 'zonelyn:image/acger/app.png' success
Copy 'whereareyou:image/acger/group.png' => 'zonelyn:image/acger/group.png' success
Copy 'whereareyou:image/gif/107659232.gif' => 'zonelyn:image/gif/107659232.gif' success
Copy 'whereareyou:image/gif/120094544.gif' => 'zonelyn:image/gif/120094544.gif' success
Copy 'whereareyou:image/gif/148607128.gif' => 'zonelyn:image/gif/148607128.gif' success
...
移动后会打印出相关信息
最后一步

上述操作后,新建的 bucket 中已经具有原空间的全部数据了,并且具有测试域名。这样就比较好办了,有多种方法,这里用 qdownload 批量进行下载,由于需要拼凑下载路径,这里可以直接通过补充配置文件完成。

在 qshell-windows-x64-v2.4.0.exe 所在的目录新建下载配置文件 dcongf.txt:

代码语言:javascript复制
{
  "dest_dir": "F:七牛", //本地目录
  "bucket": "zonelyn", //新空间名
  "cdn_domain": "q35ajtip3.bkt.clouddn.com" //外链默认域名
  //注释要删掉,不能留
}
  • 批量下载 最后就可以执行批量下载的命令了,输入就是上述配置文件,这样会将整个空间内的全部文件下载到本地目录内:
代码语言:javascript复制
$ ./qshell-windows-x64-v2.4.0.exe qdownload dconf.txt
Writing download log to file C:Userszonglin.qshellqdownloadd2f9566497ad74e39755de09c8837d9bd2f9566497ad74e39755de09c8837d9b.log
...
Downloading image/gif/165263167.gif [25/1364, 1.8%] ...
Downloading image/gif/166739693.gif [26/1364, 1.9%] ...
Downloading image/gif/170320182.gif [27/1364, 2.0%] ...
Downloading image/gif/174817916.gif [28/1364, 2.1%] ...

...

慢慢等待上述过程完成,自此全部数据就从七牛云上弄出来了。全部数据大小在10G内是肯定没问题的,下载可能很慢,等着吧。

暂时的替代方案

使用自用服务器,用 nginx 驱动,直接把数据放在自己的机器上,也不用什么cdn加速,因为并没有多少下载量,让 资源分享面 可用才是最重要的。

详细的实现及效果稍后进行补充。

0 人点赞