七牛云测试域名过期后如何备份文件

qiniu-logo.jpg

之前很多人都会使用【七牛云】作为图床,非常方便,但是后来七牛云政策做了修改,测试域名只有30个自然日的试用期,到期将自动回收。导致存储空间中文件或图片既不能外链下载,也无法从七牛云的控制台下载或预览,因此很多博客中的图片无法显示。

如果想要继续正常使用的话,需要绑定完成 ICP 备案的域名才可以,但是进行 ICP 备案,还需要一台国内主机,及一系列的手续,产生了不必要的费用及麻烦。

那么如何将失效存储空间中的文件或图片下载下来呢?本篇将告诉你方法。

一、使用自定义域名

如果您有一个完成 ICP 备案的域名,可以与失效存储空间进行绑定,绑定之后可以继续使用,也可以将文件或图片下载下来进行备份。

此方法在此不再赘述。

二、使用 qshell 备份文件

除了绑定自定义域名进行备份外,我们还可以通过 qshell 工具进行文件的备份。

qshell 工具是七牛云官方提供得,方便开发者测试和使用七牛云API的一个命令行工具。

qshell 官方文档

qshell Github地址

快速模式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 在同存储区域内创建一个新的存储空间

# 账号赋权
./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

下载完成后解压,将会得到对应三种操作系统的程序。

1
2
3
4
5
6
7
|-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 ,命令使用形式如下:

1
2
3
4
5
# CMD 命令格式
qshell.exe 命令 参数

# Git Bash 等类 Linux 终端命令格式
./qshell.exe 命令 参数

2.3 设置账号密钥

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

1
2
3
4
5
# 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 导出文件列表

1
2
3
4
5
# qshell-2.3.5 版本命令
./qshell.exe listbucket bucketError -o list.txt

# qshell-2.2.0 版本命令
./qshell.exe listbucket bucketError list.txt

list.txt 文件结构如下:

1
2
3
4
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文件的第一列,不然无法进行复制。

1
cat list.txt | awk '{print $1}' >list_final.txt

windows 系统中CMD无法使用上面的命令,可以使用 Git Bash 终端或手动修改文件。 list_final.txt 文件结构如下:

1
2
3
4
Hexo.png
atom.xml
favicon.ico
ssh_rsa.png

(3) 复制文件到新存储空间

获取到需要的文件列表 - list_final.txt 后,就可以进行文件的复制了。使用 batchcopy 命令进行复制。
文件复制方向: bucketError -> bucketNew

1
2
3
4
5
# 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 ,并将以下信息添加进去。

1
2
3
4
5
{
"dest_dir" : "D:\\Images\\",
"bucket" : "bucketNew",
"cdn_domain" : "xxxxxx.bkt.clouddn.com"
}
参数名描述
dest_dir本地数据备份路径,为全路径,并且文件夹需要事先创建好,不然无法下载
bucket空间名称
cdn_domain设置下载的CDN域名,此处为新建空间的测试域名。默认为空表示从存储源站下载,需支付源站流量费用,无法减免!!!

备注:

  1. 在Windows系统下面使用的时候,注意dest_dir的设置遵循D:\jemy\backup这种方式。也就是路径里面的\要有两个(\)。
  2. 在默认不指定cdn_domain的情况下,会从存储源站下载资源,这部分下载产生的流量会生成存储源站下载流量的计费,请注意,这部分计费不在七牛CDN免费10G流量覆盖范围。

(2) 文件下载

配置好文件之后,可以使用下面的命令进行文件下载:

1
2
# qshell-2.2.0 与 qshell-2.3.5 版本命令相同
./qshell.exe qdownload download.conf

下载完成后可以在对应的文件夹中查看下载的文件。不管是备份,还是更换图床都是可以的了。

qshell qdownload 命令文档

三、参考

  1. 七牛云 qshell 官方文档
  2. qshell Github地址
  3. Github 中关于此问题的issues
James wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!