将七牛附件搬迁到本地(附自动修改路径插件)
2018/11/05 21:56 于 快速上手 3
由于近期七牛云存储开始回收测试域名( https://segmentfault.com/q/1010000015811678 ),在测试域名被回收后,原先用这个域名上传并发布的日志中的图片将无法显示。暂且不评论七牛此举是否得当,但这么多的附件要重新上传,再一篇篇更新日志,显然给我们造成了巨大的困扰。
为此,本文提供了迁移附件的指南,供有同样问题的用户参考。
迁移需要用到的工具,请先下载:
qshell 命令行工具: https://developer.qiniu.com/kodo/tools/1302/qshell
bW Qiniu Fixer新旧附件路径替换插件:https://www.bo-blog.com/bw/storage/fcaa0297.zip
操作步骤:
(以下假设被回收了域名的七牛空间名为 client,在同一区域下新建的空间名为 test4,请自行替换)
0) 解压qshell,请阅读qshell下载页的说明,选择适合您的系统的可执行文件。
1) 在旧空间(本例中名为client)的同一区,新建一个新的bucket(本例为test4)。注意,七牛会为这个新空间分配一个新的测试域名,本例假设测试域名为 php12345.bkt.clouddn.com。
2) 在终端中执行:
qshell account AK SK
其中,AK和SK分别是您的七牛秘钥的Access Key和Secret Key。
3) 继续执行
qshell listbucket client allfiles.txt
在qshell同一文件夹下将产生一个allfiles.txt,内含所有该空间下的文件名和文件详情。
4) 继续执行
cat allfiles.txt | awk '{print $1}' >allfiles2.txt
用awk获取列表结果的第一列,存于allfiles2.txt文件中。
5) 继续执行
qshell batchcopy -force client test4 allfiles2.txt
该命令会批量把旧空间client的文件复制到新空间test4里。
6) 现在,我们需要将所有文件从新的空间下载到PC本机。
在qshell同一文件夹下,新建一纯文本文件名为 config.conf。
该文件中,输入下列内容:
{
"dest_dir" : "/Users/mymac/Documents/backup",
"bucket" : "test4",
"prefix" : "",
"suffixes" : "",
"cdn_domain" : "php12345.bkt.clouddn.com",
"referer" : "http://php12345.bkt.clouddn.com",
"log_file" : "/Users/mymac/Downloads/download.log",
"log_level" : "info",
"log_rotate" : 1,
"log_stdout" : false
}
请注意,dest_dir替换为想要备份到本机的路径。bucket输入新空间名。cdn_domain和referer请填写新分配的测试域名。log_info里填一个Log文件的存放路径。
保存该文件后,请在终端继续执行:
qshell qdownload config.conf
等待所有文件下载到本机backup文件夹下。
7) 现在可以关闭终端。
我们将下载下来的 backup/storage 目录下的全部文件,用FTP等手段上传到bW博客的storage/ 目录下。
至此,文件迁移完成。
8) 现在,还需要最后一步,也就是一次性替换旧的文件路径为 bW的本地路径,不然图片依然是无法显示的。
请解压先前下载的插件,打开 qiniufixer/domain.php 文件。
<?php
define ('OLD_QINIU_DOMAIN', 'client.qiniudn.com');
define ('NEW_QINIU_DOMAIN', 'www.myblog.com');
第2行引号中是旧的bucket访问域名和路径。第三行是bW的真实域名和路径。在这个例子里,迁移后的附件访问地址为 www.myblog.com/storage/xxxx.jpg。
如果你的bW有启用https,那么可以这样写:
<?php
define ('OLD_QINIU_DOMAIN', 'http://client.qiniudn.com/storage');
define ('NEW_QINIU_DOMAIN', 'https://www.myblog.com/storage');
9) 将整个 qiniufixer 文件夹上传到 bW的安装目录的 extension 目录下。注意只能有一层qiniufixer文件夹。某些解压软件会将文件解压成 xxxxx/qiniufixer/,请仅上传第二层。
然后,在浏览器内登录bW后台,到“插件扩展”里,点击“手动载入”按钮,填写目录名 qiniufixer,点击“安装”。然后启用该扩展。
恭喜,您已完成了紧急抢救旧空间文件、备份到本机、迁移到本地,并顺便更新了已发布的日志。
参考链接
https://segmentfault.com/q/1010000016887800?utm_source=tag-newest
后话
七牛此举也许是受到了监管未备案域名的压力。但测试域名被回收后,原先上传的文件不仅不能公开显示,而且无法导出(无论是qshell,还是在那个难用至极的portal后台里都不能直接下载),这样对待用户实在太难看。我们这些轻应用自己迁移一下,写个hotfix也许不是大事,但那些存放了海量文件、系统不易修改的用户呢?不管怎么说,我们要记住一点:勤备份,把数据掌握在自己手中。
山隈
2018/11/10 18:21
kiyu
2018/11/06 19:56
Bo-blog
2018/11/06 00:03