七牛云测试域名过期后如何备份文件
之前很多人都会使用【七牛云】作为图床,非常方便,但是后来七牛云政策做了修改,测试域名只有 30 个自然日的试用期,到期将自动回收。导致存储空间中文件或图片既不能外链下载,也无法从七牛云的控制台下载或预览,因此很多博客中的图片无法显示。
如果想要继续正常使用的话,需要绑定完成 ICP 备案的域名才可以,但是进行 ICP 备案,还需要一台国内主机,及一系列的手续,产生了不必要的费用及麻烦。
那么如何将失效存储空间中的文件或图片下载下来呢?本篇将告诉你方法。
一、使用自定义域名
如果您有一个完成 ICP 备案的域名,可以与失效存储空间进行绑定,绑定之后可以继续使用,也可以将文件或图片下载下来进行备份。
此方法在此不再赘述。
二、使用 qshell 备份文件
除了绑定自定义域名进行备份外,我们还可以通过 qshell 工具进行文件的备份。
qshell 工具是七牛云官方提供得,方便开发者测试和使用七牛云 API 的一个命令行工具。
qshell 官方文档
qshell Github 地址
快速模式
# 在同存储区域内创建一个新的存储空间
# 账号赋权
./qshell.exe account <AccessKey> <SecretKey> <Name>
# 获取失效存储空间的文件列表
./qshell.exe listbucket bucketError -o list.txt
# 处理文件,仅获取第一列文件名
cat list.txt | awk ‘{print $1}’ >list_final.txt
# 将失效存储空间的文件复制到新的存储空间
./qshell.exe batchcopy –force –overwrite bucketError bucketNew -i list_final.txt
# 下载文件
./qshell.exe qdownload download.conf
2.1 在七牛云控制台新建空间
使用浏览器进入七牛云控制台,在对象存储中新建一个存储空间,此存储空间需要与失效的存储空间在同一个【存储区域】上(比如都在华东,不在同一存储区域无法拷贝)。此存储空间被用来将失效存储空间中的文件复制进去,因为新建的存储空间有一个可以使用 30 天的测试域名,所以可以从这个新建的存储空间中将原来的文件下载下来进行备份。
2.2 安装 qshell 工具
qshell 工具下载地址为:http://devtools.qiniu.com/qshell-v2.3.5.zip
下载完成后解压,将会得到对应三种操作系统的程序。
|-qshell-v2.3.5
|-qshell_darwin_x64
|-qshell_linux_arm
|-qshell_linux_x64
|-qshell_linux_x86
|-qshell_windows_x64.exe
|-qshell_windows_x86.exe
如果你是 Windows 系统的话,那么你应该使用 qshell_windows_x64.exe 这个程序,因为这是一个命令行工具,所以双击打开会闪退,应该在命令行中操作。为了简化命令,可将其重命名为 qshell.exe,命令使用形式如下:
# CMD 命令格式
qshell.exe 命令 参数
# Git Bash 等类 Linux 终端命令格式
./qshell.exe 命令 参数
2.3 设置账号密钥
想要使用 qshell 操作七牛空间,需要添加账户密钥 AccessKey 和 SecretKey, 赋予 qshell 权限。
# qshell-2.3.5 版本命令
./qshell.exe account <AccessKey> <SecretKey> <Name>
# qshell-2.2.0 版本命令
./qshell.exe account <AccessKey> <SecretKey>
AccessKey, SecretKey 两个参数可以从七牛云 - 密钥管理中获取。
Name 是用户可以任意取的名字,表示当前在本地记录的账户的名称,和在七牛注册的邮箱信息没有关系。
注:qshell-2.2.0 版本 与 qshell-2.3.5 版本 命令上稍有差异。
qshell account 命令文档
2.4 复制失效存储空间文件至新存储空间
假设失效存储空间名为:bucketError
假设新建存储空间名为:bucketNew
若想要将失效存储空间的文件复制到新的存储空间,首先需要获取失效存储空间的文件列表,使用 listbucket 命令进行文件列表的导出。获取到文件列表后,使用 batchcopy 命令将 bucketError 中的文件全部复制到 bucketNew 中。
(1) 使用 listbucket 导出文件列表
# qshell-2.3.5 版本命令
./qshell.exe listbucket bucketError -o list.txt
# qshell-2.2.0 版本命令
./qshell.exe listbucket bucketError list.txt
list.txt 文件结构如下:
Hexo.png 33446 Fmmc-_RoRE19Gy86M_p3sEqt-Ue3 15475323542679537 image/png 0
atom.xml 249682 FhtSZviyys9iSIMyPBmuohWEJDcE 15475323543559808 application/xml 0
favicon.ico 4286 FiXUxb856CirSyQ78t3VQNQmCIZO 15475323543881185 image/x-icon 0
ssh_rsa.png 17895 FsImghWkk55vj06DIt6DAhhLzAxQ 15475323564546303 image/png 0
qshell listbucket 命令文档
(2) 修改文件列表结构
这里需要修改文件,只保留第一列的文件名,可以用 awk 获取 list 文件的第一列,不然无法进行复制。
cat list.txt | awk ‘{print $1}’ >list_final.txt
windows 系统中 CMD 无法使用上面的命令,可以使用 Git Bash 终端或手动修改文件。list_final.txt 文件结构如下:
Hexo.png
atom.xml
favicon.ico
ssh_rsa.png
(3) 复制文件到新存储空间
获取到需要的文件列表 – list_final.txt 后,就可以进行文件的复制了。使用 batchcopy 命令进行复制。文件复制方向:bucketError -> bucketNew。
# qshell-2.3.5 版本命令
./qshell.exe batchcopy –force –overwrite bucketError bucketNew -i list_final.txt
# qshell-2.2.0 版本命令
./qshell.exe batchcopy –force –overwrite bucketError bucketNew list_final.txt
force : 没有此选项,需要输入验证码,加入此项则不需要输入。
overwrite:如果批量复制的文件列表中存在目标空间已有同名文件的情况,针对该文件的复制会失败,如果希望能够强制覆盖目标文件,那么可以使用 -overwrite 选项。
qshell batchcopy 命令文档
2.5 下载新存储空间的文件
使用 qdownload 命令可以将存储空间中的文件下载到本地。但是该功能默认需要收取流量费用,如果想要免费下载,还需进行以下配置。
(1) 配置 download.conf
在 qshell 目录下创建新文件 download.conf,并将以下信息添加进去。
{
“dest_dir” : “D:\\Images\\”,
“bucket” : “bucketNew”,
“cdn_domain” : “xxxxxx.bkt.clouddn.com”
}
参数名
描述
dest_dir
本地数据备份路径,为全路径,并且文件夹需要事先创建好,不然无法下载
bucket
空间名称
cdn_domain
设置下载的 CDN 域名,此处为新建空间的测试域名。默认为空表示从存储源站下载,需支付源站流量费用,无法减免!!!
备注:
在 Windows 系统下面使用的时候,注意 dest_dir 的设置遵循 D:\jemy\backup 这种方式。也就是路径里面的要有两个(\)。
在默认不指定 cdn_domain 的情况下,会从存储源站下载资源,这部分下载产生的流量会生成存储源站下载流量的计费,请注意,这部分计费不在七牛 CDN 免费 10G 流量覆盖范围。
(2) 文件下载
配置好文件之后,可以使用下面的命令进行文件下载:
# qshell-2.2.0 与 qshell-2.3.5 版本命令相同
./qshell.exe qdownload download.conf
下载完成后可以在对应的文件夹中查看下载的文件。不管是备份,还是更换图床都是可以的了。
qshell qdownload 命令文档
三、参考
七牛云 qshell 官方文档
qshell Github 地址
Github 中关于此问题的 issues
点击阅读原文