七牛云存储是米扑在2013年就开始了使用,CDN加速过米扑博客,今天介绍备份米扑博客到七牛云存储。

七牛云存储支持多种开发者工具,支持多种命令行工具:QsunSync、qshell、qrsctl、qfetch、qrsync(已弃用)

1)QsunSync:使用C# + WPF开发的用于将本地文件同步到七牛云端空间的Windows客户端。该客户端的特点就是简单易用,而且方便增量同步。

2)qshell:利用七牛文档上公开的API实现的一个方便开发者测试和使用七牛API服务的命令行工具,目前该工具融合了七牛存储,CDN,以及其他的一些七牛服务中经常使用到的方法对应的便捷命令,比如b64decode

3)qrsctl:根据七牛云存储API实现的一个简易命令行辅助工具,覆盖七牛云存储开发者网站包含的大部分甚至更高级的功能。

4)qfetch:数据迁移工具,利用七牛提供的fetch功能抓取指定文件列表中的文件,可以根据需要中断任务的执行,下次重新使用原命令执行时,会自动跳过已经抓取成功的资源

5)qrsync:已弃用,由于无法支持并发,上传速度较慢,推荐您使用七牛的 qshell 命令行工具 进行数据同步。该工具将不再维护,请使用 qshell 工具。

 

本文米扑博客主要介绍上传备份米扑博客,使用到了 qshellqrsctl 命令行工具

 

一、qrsctl (推荐,简单易用

七牛官方文档:https://developer.qiniu.com/kodo/tools/1300/qrsctl

qrsctl命令下载:Linux 64bits

下载 qrsctl后,可执行授权,并复制到 linux 系统环境变量里,

chmod +x qrsctl
cp qrsctl /usr/local/bin/             
# 一定要这么做,否则下文会提示找不到命令 qrsctl

本文演示环境:centos 7.4 

 

1、登录与退出

登录格式1:

qrsctl login <User> <Passwd>

参数说明:

User :七牛云的注册邮箱地址

Passwd:七牛云的登录密码

注意:用户名和密码,最好都加上单引号,否则命令行容易出错,这是最高权限级登录

用您的开发者帐号登录七牛云存储,登录成功后,才能进行接下来所有其他指令操作。

登录成功后,会话的有效期是 3600 秒(一个小时),一个小时后需要重新登录。

例如米扑博客登录:

qrsctl login 'mimvp-blog@mimvp.com' 'mimvp-blog-passwd'

 

登录格式2:

qrsctl login <AccessKey> <SecretKey>

参数说明:

AccessKey :七牛云的密钥AccessKey

SecretKey:七牛云的密钥SecretKey

七牛云的密钥,可以登录七牛云官网 —> 个人中心 —> 密钥管理 查看,权限比用户名和密码登录的权限低

注意:密钥AccessKey和SecretKey,最好都加上单引号,否则命令行容易出错

例如米扑博客登录:

qrsctl login 'e23CK_xPoFYV8U9dlIacFZUFUWLQiaDW21wWXPA9o' 'WXPMLuabw1AxmFGu5H21wV3px9UoUwqGQEjpP'

 

登录格式3:

qrsctl login -a <AccountConf>

provide an account config file that provide access_key & secret_key (in json format)

参数说明:

AccountConf :一个json配置文件,里面包含了七牛云的密钥AccessKey 和 SecretKey

例如:vim  qrsctl.json

{
  "AccessKey":"e23CK_xPoFYV8U9dlIacFZUFUWLQiaDW21wWXPA9o",
  "SecretKey":"WXPMLuabw1AxmFGu5H21wV3px9UoUwqGQEjpP",
}

执行命令:

./qrsctl login -a qrsctl.json

 

退出登录

qrsctl 命令实际没有退出登录的参数,但是可以变通下,登录时故意输入登录的用户名或密码,或故意输错密钥AccessKey 或 SecretKey

便可以可实现退出登录的目录,例如:

# qrsctl login 'e23CK_dlIxuBSiUWLQiaDW11wWQBD9oFY1234567' 'mFGu5oUwqGQEjHXHWriQliiExV3pxxxxxx'   // 故意输入错误的密钥
# qrsctl appinfo
AppInfo failed: bad token
RequestId:  kbISrAsbHQedWwEA

# qrsctl buckets
Error: bad token
RequestId:  kbISrBgbIwedWwEA

 

2、账号管理

七牛用户名和密码登录后,可以查看账户信息

qrsctl login 'mimvp-blog@mimvp.com' 'mimvp-blog-passwd'

 

查看账户信息:

# qrsctl info     // 注:密钥登录的无法使用此命令参数
UserId:          mimvp-blog@mimvp.com
Uid:             1848027839
Email:           mimvp-blog@mimvp.com
UserType:        stduser(0x4)
DeviceNum:       0
InvitationNum:   0

 

查看密钥(AccessKey/SecretKey)

# qrsctl appinfo 
AccessKey: e23CK_xPoFYV8U9dlIacFZUFUWLQiaDW21wWXPA9o 
SecretKey: WXPMLuabw1AxmFGu5H21wV3px9UoUwqGQEjpP 
AccessKey2:  
SecretKey2:  
AppId: 1202917839

 

3、空间管理重要

1)创建空间(Bucket)

qrsctl mkbucket2 <Bucket>       # Bucket,空间名称,字母数字下划线组合

例如:米扑博客创建米扑科技的备份空间(mimvp-backup)

qrsctl mkbucket2 mimvp-backup     # 需要的等待几秒钟,七牛云正在创建中

 

2)将空间设置为私有(创建后默认是私有)

qrsctl private <Bucket> 1       # 1 - 私有, 0 - 公开

查看私密属性,默认是私有的

qrsctl bucketinfo mimvp-backup | grep private
        "private": 1,

 

3)列出所有空间(Buckets)

qrsctl buckets

查看刚才创建的米扑备份空间(mimvp-backup)

qrsctl buckets      
[mimvp-proxy mimvp-backup]       

说明:发现有两个空间,之前应该存在一个空间(mimvp-proxy),这里可登录七牛网页平台查看刚创建的空间(mimvp-backup)

 

4)查看指定空间(Bucket)信息(信息很多)

qrsctl bucketinfo <Bucket>

查看刚才创建的米扑备份空间(mimvp-backup),信息太多,就不贴出来了,很简单

qrsctl bucketinfo mimvp-backup

 

5)删除空间(Bucket)

似乎没有命令可以删除空间(Bucket),可以通过七牛云管理后台删除空间(Bucket)

登录七牛云网页管理平台 —> 对象存储 —> 选中要删除的空间 —> 空间设置 —> 删除空间

 

4、文件操作重要

1)上传文件

qrsctl put <Bucket> <Key> <SrcFile>    

参数说明:

Bucket : 空间名称,例如上文创建的米扑备份空间(mimvp-backup)

Key : 上传的文件在空间上的名称(Key-Value格式,Key实际是Name

SrcFile : 本地要上传的文件

例如:上传本地米扑拨号的备份到米扑空间(mimvp-backup)

qrsctl put mimvp-backup mimvp-blog-sql_files_bk_2018-09-15.tgz /home/data/data_bk/mimvp-blog-sql_files_bk_2018-09-15.tgz

 

上传一个大文件(超过 4MB)

qrsctl put -c <Bucket> <Key> <SrcFile>     # 选项 会启用切片并行上传一个大文件(超过 4MB)

 

2)下载文件

qrsctl get <Bucket> <Key> <DestFile>

参数说明:

Bucket : 空间名称,例如上文创建的米扑备份空间(mimvp-backup)

Key : 上传的文件在空间上的名称(Key-Value格式,Key实际是Name

DestFile : 下载到本地的文件名称,可以是名称Key,也可以重命名

例如:从米扑空间(mimvp-backup)下载文件,并重命名

 qrsctl get mimvp-backup mimvp-blog-sql_files_bk_2018-09-15.tgz mimvp-blog-sql_files_bk_2018-09-15_222.tgz

INFO: Fetching http://iovip.qbox.me/file/sDdm9P4JIUNagyKrOKd0sMAACe3AC3AxIZPwfxoCyc-6wP6LJEBUFegyot6iJjGu3F_vDesIeD-i3rA_2t706wP6KxIot2WWUjIx2nr_L-OicxH_GrW3t7dPP7q3vzSGz1e3t0hpyfH2trVNt7e3YM4aZ16mxojK-NJ_HiBVpcLD1NKvWWksVtB4gVaQeIF4gVBx8fb3tTWw97Y2ZjQ2 ...

查看上传和下载的文件,大小都是一致的

# ll
-rw-r--r-- 1 root root   887032 Sep 15 23:32 mimvp-blog-sql_files_bk_2018-09-15_222.tgz
-rw-r--r-- 1 root root   887032 Sep 15 23:29 mimvp-blog-sql_files_bk_2018-09-15.tgz

 

3)查看文件

qrsctl stat <Bucket> <Key>

参数不说明了,见上面的说明,直接看结果

qrsctl stat mimvp-backup mimvp-blog-sql_files_bk_2018-09-15.tgz

{"hash":"FXEtd5rdDpE_WGLHqWBk_Uc9lyIM","fsize":887032,"putTime":15370254238091041,"mimeType":"application/gnutar","endUser":""}

 

查看存储空间(Bucket)的所有文件

qrsctl listprefix <bucket> <prefix> [limit] [marker]

因为七牛不支持查看存储空间(Bucket)的所有文件,只支持前缀模糊匹配的文件

因此,需要变通,把米扑备份文件都加上一个前缀 "mimvp-" 这样才可以查看空间下的全部文件

qrsctl listprefix mimvp-backup "mimvp-" 50    # 若不加显示个数50,则显示全部符合前缀的文件

 

4)移动文件(重命名)

qrsctl mv <Bucket1:KeyOld> <Bucket2:KeyNew>

把空间 mimvp-backup 文件改名为 后缀加上 "_backup"

qrsctl mv mimvp-backup:mimvp-blog-sql_files_bk_2018-09-15.tgz mimvp-backup:mimvp-blog-sql_files_bk_2018-09-15_backup.tgz

查看改名前后的文件

# qrsctl listprefix mimvp-backup "mimvp-"     // 查看空间的全部前缀 "mimvp-" 文件
marker:  
mimvp-blog-sql_files_bk_2018-09-15_backup.tgz
# qrsctl stat mimvp-backup mimvp-blog-sql_files_bk_2018-09-15.tgz    // 查看空间的重命名前的文件(已删除,故不存在)
Stat failed: no such file or directory
RequestId:  kbISrO9ESCidWwEA
# qrsctl stat mimvp-backup mimvp-blog-sql_files_bk_2018-09-15_backup.tgz   // 查看空间的重命名后的文件(存在)
{"hash":"5rdDdEpEXFt_LkHqWGWB_U9lyIMc","fsize":887032,"putTime":15370260112054845,"mimeType":"application/gnutar","endUser":""}

 

5)删除文件

qrsctl del <Bucket> <Key>

参数不说明了,见上面的说明,删除重命名后的文件,直接看结果

# qrsctl del mimvp-backup mimvp-blog-sql_files_bk_2018-09-15_backup.tgz   // 删除文件
# qrsctl listprefix mimvp-backup "mimvp-"       // 列出空间的所有文件,发现为空,已经没有了                          
marker:  

 

 

二、qshell (qrsync的替代命令,较复杂,米扑博客备份选了此方案,主要增量备份wp-content/uploads/xxx图片

七牛官方文档:https://developer.qiniu.com/kodo/tools/1302/qshell

qshell命令下载:qshell-v2.1.8.zip

下载 qshell后,解压,然后可执行授权,并复制到 linux 系统环境变量里,

unzip qshell-v2.1.8.zip -d qshell-v2.1.8
chmod +x qshell-v2.1.8/qshell-linux-x64
cp qshell-v2.1.8/qshell-linux-x64 /usr/local/bin/qshell             
# 一定要这么做,否则下文会提示找不到命令 qrsctl

本文演示环境:centos 7.4 

 

qshell 使用Go语言编写而成,当然为了方便不熟悉Go或者急于使用工具来解决问题的开发者,提供了预先编译好的各主流操作系统平台的二进制文件供大家下载使用,由于平台的多样性,把这些二进制打包放到一个文件里面,请大家根据下面的说明各自选择合适的版本来使用。在文档中的例子里面,为了方便,统一使用qshell这个命令来做介绍。

 

qshell 命令选项

该工具还有一些有用的选项参数如下:

参数 描述
-d 设置是否输出DEBUG日志,如果指定这个选项,则输出DEBUG级别的日志
-m 切换到多用户模式,这样所有的临时文件写入都在命令运行的目录下
-h 打印命令列表帮助信息,遇到参数忘记的情况下,可以使用该命令
-v 打印工具版本,反馈问题的时候,请提前告知工具对应版本号

 

qshell 命令列表

命令 类别 描述 详细
account 账号 设置或显示当前用户的AccessKeySecretKey 文档
dircache 存储 输出本地指定路径下所有的文件列表 文档
listbucket 存储 列举七牛空间里面的所有文件 文档
prefop 存储 查询七牛数据处理的结果 文档
fput 存储 以文件表单的方式上传一个文件 文档
rput 存储 以分片上传的方式上传一个文件 文档
qupload 存储 同步数据到七牛空间, 带同步进度信息,和数据上传完整性检查 文档
qupload2 存储 命令行上传,同步数据到七牛空间, 带同步进度信息,和数据上传完整性检查 文档
qdownload 存储 从七牛空间同步数据到本地,支持只同步某些前缀的文件,支持增量同步 文档
stat 存储 查询七牛空间中一个文件的基本信息 文档
delete 存储 删除七牛空间中的一个文件 文档
move 存储 移动或重命名七牛空间中的一个文件 文档
copy 存储 复制七牛空间中的一个文件 文档
chgm 存储 修改七牛空间中的一个文件的MimeType 文档
fetch 存储 从Internet上抓取一个资源并存储到七牛空间中 文档
sync 存储 从Internet上抓取一个资源并存储到七牛空间中,适合大文件的场合 文档
prefetch 存储 更新七牛空间中从源站镜像过来的文件 文档
batchdelete 存储 批量删除七牛空间中的文件,可以直接根据listbucket的结果来删除 文档
batchchgm 存储 批量修改七牛空间中文件的MimeType 文档
batchcopy 存储 批量复制七牛空间中的文件到另一个空间 文档
batchmove 存储 批量移动七牛空间中的文件到另一个空间 文档
batchrename 存储 批量重命名七牛空间中的文件 文档
batchsign 存储 批量根据资源的公开外链生成资源的私有外链 文档
privateurl 存储 生成私有空间资源的访问外链 文档
saveas 存储 实时处理的saveas链接快捷生成工具 文档
reqid 存储 七牛自定义头部X-Reqid解码工具 文档
buckets 存储 获取当前账号下所有的空间名称 文档
domains 存储 获取指定空间的所有关联域名 文档
qetag 存储 根据七牛的qetag算法来计算文件的hash 文档
m3u8delete 存储 根据流媒体播放列表文件删除七牛空间中的流媒体切片 文档
m3u8replace 存储 修改流媒体播放列表文件中的切片引用域名 文档
cdnrefresh CDN 批量刷新cdn的访问外链 文档
cdnprefetch CDN 批量预取cdn的访问外链 文档
b64encode 工具 base64编码工具,可选是否使用UrlSafe方式,默认UrlSafe 文档
b64decode 工具 base64解码工具,可选是否使用UrlSafe方式,默认UrlSafe 文档
urlencode 工具 url编码工具 文档
urldecode 工具 url解码工具 文档
ts2d 工具 将timestamp(单位秒)转为UTC+8:00中国日期,主要用来检查上传策略的deadline参数 文档
tms2d 工具 将timestamp(单位毫秒)转为UTC+8:00中国日期 文档
tns2d 工具 将timestamp(单位100纳秒)转为UTC+8:00中国日期 文档
d2ts 工具 将日期转为timestamp(单位秒) 文档
ip 工具 根据淘宝的公开API查询ip地址的地理位置 文档
unzip 工具 解压zip文件,支持UTF-8编码和GBK编码 文档
alilistbucket 第三方 列举阿里OSS空间里面的所有文件 文档

以上红色命令部分,是我们即将介绍和用到的备份常用命令,下面详细结合示例介绍。

 

1、账户管理(account)

qshell account <Your AccessKey> <Your SecretKey>

account命令用来设置当前用户的AccessKey和SecretKey,这对Key主要用在其他的需要授权的命令中,比如stat、delete、listbucket命令中。 该命令设置的信息,经过加密保存在命令执行的目录下的.qshell/account.json文件中。

示例:

1)设置当前用户的AccessKey和SecretKey

qshell account 'ELUs327kxVPJrGCXqWae9yioc0xYZyrIpbM6Wh6x' 'LVzZY2SqOQ_I_kM1n00ygACVBArDvOWtiLkDtKiw'

2)输出当前用户设置的AccessKey和SecretKey

qshell account

输出:

AccessKey: ELUs327kxVPJrGCXqWae9yioc0xYZyrIpbM6Wh6x 
SecretKey: LVzZY2SqOQ_I_kM1n00ygACVBArDvOWtiLkDtKiw

 

2、上传单个文件

qshell fput <Bucket> <Key> <LocalFile> [Overwrite] [MimeType] [UpHost] [FileType]

qshell rput <Bucket> <Key> <LocalFile> [Overwrite] [MimeType] [UpHost] [FileType]

参数说明:

Bucket : 空间名称,例如上文创建的米扑备份空间(mimvp-backup)

Key : 上传的文件在空间上的名称(Key-Value格式,Key实际是Name

LocalFile : 本地要上传的文件

Overwrite :是否覆盖空间中已有的同名文件,取值为 false, true,默认不覆盖 false

MimeType :文件类型

例如:上传米扑博客备份文件

# qshell fput mimvp-backup mimvp-blog-sql_files_bk_2018-09-15.tgz mimvp-blog-sql_files_bk_2018-09-15.tgz true
2018/09/16 00:31:24 [I] Load account from /root/.qshell/account.json
Uploading mimvp-blog-sql_files_bk_2018-09-15.tgz => mimvp-backup : mimvp-blog-sql_files_bk_2018-09-15.tgz ...
Progress: 100%
Put file mimvp-blog-sql_files_bk_2018-09-15.tgz => mimvp-backup : mimvp-blog-sql_files_bk_2018-09-15.tgz success!
Hash: FXEEtd5rdDp_WGLkHqWB_9McUlyI
Fsize: 887032 ( 866.24 KB )
MimeType: Overwrite
Last time: 5.99 s, Average Speed: 148.2 KB/s

 

3、上传多个文件(批量同步)

qshell qupload [ThreadCount] <LocalUploadConfig>

qshell qupload2 -src-dir=srcFile -bucket=mimvp-backup

qshell qdownload [ThreadCount] <LocalDownloadConfig>

参数说明:

qupload :是用来将本地目录中的文件同步到七牛空间中的命令。

qupload2 :功能和 qupload 一致,不过 qupload2 通过命令行的方式来指定各个需要的参数

qdownload :将七牛空间中的文件同步到本地磁盘中,支持只同步带特定前缀或者后缀的文件,也支持在本地备份路径不变的情况下进行增量同步。 需要额外指出的是,将文件同步到本地都是走的七牛存储源站的流量而不是CDN的流量,因为CDN通常情况下会认为大量的文件下载操作是非法访问从而进行限制,因此该功能默认需要计费,如果希望享受10G的免费流量,请自行设置cdn_domain参数,如不设置,需支付源站流量费用,无法减免!

ThreadCount :并发上传的协程数量,默认为1,即文件一个个上传

LocalUploadConfig :数据同步的上传配置文件,该配置文件里面包含了一些诸如本地同步目录,目标空间名称等信息

LocalDownloadConfig数据同步的下载配置文件,该配置文件里面包含了一些诸如本地同步目录,目标空间名称等信息

注意:如上命令格式的参数,qshell 命令的批量同步上传(qupload)和下载(qdownload),都需要指定配置文件(LocalxxxConfig)才行。

 

1)登录鉴权

qshell account 'ELUs327kxVPJrGCXqWae9yioc0xYZyrIpbM6Wh6x' 'LVzZY2SqOQ_I_kM1n00ygACVBArDvOWtiLkDtKiw'

 

2)编写上传配置文件 

vim qupload.json

{
  "src_dir"            :   "/home/mimvp/data_bk/mimvp-blog-sql_files",
  "bucket"             :   "mimvp-backup",
  "file_list"          :   "",
  "key_prefix"         :   "",
  "up_host"            :   "",
  "ignore_dir"         :   false,
  "overwrite"          :   true,
  "check_exists"       :   true,
  "check_hash"         :   true,
  "check_size"         :   true,
  "rescan_local"       :   true,
  "skip_file_prefixes" :   "test,demo,",
  "skip_path_prefixes" :   "hello/,temp/",
  "skip_fixed_strings" :   ".svn,.git",
  "skip_suffixes"      :   ".DS_Store,.exe",
  "log_file"           :   "qupload.log",
  "log_level"          :   "info",
  "log_rotate"         :   1,
  "log_stdout"         :   true,
  "file_type"          :   0
}

 

3)执行上传命令

qshell qupload 5 qupload.json

运行日志:

# qshell qupload 5 qupload.json 
Writing upload log to file qupload.log

2018/09/16 11:14:13 [I] Load account from /root/.qshell/account.json
2018/09/16 11:14:14 [I] Listing local sync dir, this can take a long time for big directory, please wait patiently
2018/09/16 11:14:14 [I] Walk `/home/mimvp/data_bk/mimvp-blog-sql_files` start from 2018-09-16 11:14:14.008697007 +0800 CST m=+0.070638859
2018/09/16 11:14:14 [I] Walking through `/home/mimvp/data_bk/mimvp-blog-sql_files`
2018/09/16 11:14:14 [I] Walk `/home/mimvp/data_bk/mimvp-blog-sql_files` end at 2018-09-16 11:14:14.00886623 +0800 CST m=+0.070808087
2018/09/16 11:14:14 [I] Walk `/home/mimvp/data_bk/mimvp-blog-sql_files` last for 182.331µs
2018/09/16 11:14:14 [I] Total file count cached 9
Uploading /home/mimvp/data_bk/mimvp-blog-sql_files/wordpress.sql.tgz => wordpress.sql.tgz [1/9, 11.1%] ...
2018/09/16 11:14:14 [I] Uploading file /home/mimvp/data_bk/mimvp-blog-sql_files/wordpress.sql.tgz => mimvp-backup : wordpress.sql.tgz
......
2018/09/16 11:28:44 [I] -------------Upload Result--------------
2018/09/16 11:28:44 [I]               Total:         9
2018/09/16 11:28:44 [I]             Success:         9
2018/09/16 11:28:44 [I]             Failure:         0
2018/09/16 11:28:44 [I]        NotOverwrite:         0
2018/09/16 11:28:44 [I]             Skipped:         0
2018/09/16 11:28:44 [I]            Duration:14m30.317412451s
2018/09/16 11:28:44 [I] ----------------------------------------

 

4)查看空间文件

qshell listbucket [-marker Marker] [Prefix] <ListBucketResultFile>

运行日志:

qshell listbucket mimvp-backup "mimvp-" listBucketFiles

列出的空间(mimvp-backup)文件不会显示在控制台,而是保存在了本地文件 listBucketFiles

若前缀为空,则表示列出空间里的全部文件到本地文件 listBucketFiles

 

5)查看空间的某一个文件信息

qshell stat <Bucket> <Key>

运行日志:

# qshell stat mimvp-backup wordpress.tgz
2018/09/16 12:34:51 [I] Load account from /home/mimvp/.qshell/account.json
Bucket:             mimvp-backup
Key:                wordpress.tgz
Hash:               rBqz5fAdaljPjqpt_oIh9ygFcrb8
Fsize:              37584928 -> 35.84 MB
PutTime:            15370685242223134 -> 2018-09-16 11:28:44.2223134 +0800 CST
MimeType:           application/gnutar
FileType:           0 -> 标准存储

 

6)删除空间的某一个文件

qshell delete <Bucket> <Key>

运行日志:

qshell delete mimvp-backup wordpress.tgz

 

7)批量删除空间的全部文件

qshell batchdelete [-force] <Bucket> <KeyListFile>

把删除的文件,先写入本地 KeyListFile 文件里(deleteBucketFile.txt)

例如: vim deleteBucketFile.txt

# cat deleteBucketFile.txt
wordpress.sql.tgz
fundmanager.sql.tgz
mediawiki.sql.tgz
discuz.sql.tgz

运行日志:

# qshell batchdelete mimvp-backup deleteBucketFile.txt 
<DANGER> Input feehag to confirm operation: feehag

 

若需要删除空间里的全部文件,则可以结合上面的 4)查看空间文件,设置前缀为空,列出空间全部文件到本地 deleteBucketFile.txt ,然后再删除之

a)查询空间全部文件,保存到deleteBucketFile.txt 

qshell listbucket mimvp-backup deleteBucketFile.txt 

b)查看列出的空间全部文件

# cat deleteBucketFile.txt 
discuz_x3.2.tgz 13812336        lhcly1oc4nsZN_KgPbBWV_LvHuJF    15370683450660768       application/gnutar      0
mediawiki.tgz   37117768        lp87HBQsA9qedCK2al1KT7BwXedR    15370683127249470       application/gnutar      0
mimvp-blog-sql_files_bk_2018-09-15.tgz  887032  Ftd5rdDpEXE_WHqWBGLk_U9lyIMc    15370284682198183       application/gnutar      0
mimvp-sql_files_bk_2018-09-15.tgz       111957120       lhgVEIV6EOD7b5Q1zc5nQ3Lsh_qi    15370252410661931       application/gnutar       0
qupload.json    761     FkcOmAeI3dsdUzVMK7alW4iL-GqD    15370676645551432       application/json        0
qupload.log     2317    FtBJanMV6UjOycIYmD3VxuMlIXwH    15370676645816220       text/plain      0

c)删除查看空间的全部文件

qshell batchdelete -force mimvp-backup deleteBucketFile.txt

 

4、下载文件敲黑板,一不小心会扣费哦

该功能默认需要计费,如果希望享受10G的免费流量,请自行设置cdn_domain参数,如不设置,需支付源站流量费用,无法减免!

qshell qdownload [ThreadCount] <LocalDownloadConfig>

参数说明:

ThreadCount :下载的并发协程数量,默认为5,取值范围为 1-2000,如果不在这个范围内,默认为5

LocalUploadConfig:数据同步的配置文件,该配置文件里面包含了一些诸如本地同步目录,目标空间名称等信息

 

1)登录鉴权

qshell account 'ELUs327kxVPJrGCXqWae9yioc0xYZyrIpbM6Wh6x' 'LVzZY2SqOQ_I_kM1n00ygACVBArDvOWtiLkDtKiw'

 

2)编写下载配置文件 

vim qdownload.json

{
  "dest_dir"   :   "/home/mimvp/data_bk/mimvp-blog-sql_files/qdownload",
  "bucket"     :   "mimvp-backup",
  "prefix"     :   "",
  "suffixes"   :   "",
  "cdn_domain" :   "down-qiniu.mimvp.com",
  "referer"    :   "",
  "log_file"   :   "qdownload.log",
  "log_level"  :   "info",
  "log_rotate" :   1,
  "log_stdout" :   true
}

注意:"cdn_domain" 指定了米扑博客自定义的CDN域名 "down-qiniu.mimvp.com",免去了收费

cdn_domain 自定义域名配置,请见七牛云:融合 CDN —> 域名管理 —> 添加域名 —> 普通域名,添加 "down-qiniu.mimvp.com"

具体绑定域名的 CNAME 见七牛云的官方文档,很简单的,最后选择自定义的CDN 域名 "down-qiniu.mimvp.com",下载免费

七牛的临时CDN域名,在30天后会自动失效,因此一定要设置自己的CDN域名,设置方法很简单的,这里不介绍了

 

3)执行下载命令

qshell qdownload 5 qdownload.json

运行日志:

# qshell qdownload 5 qdownload.json 
Writing download log to file qdownload.log

2018/09/16 13:53:33 [I] Load account from /home/mimvp/.qshell/account.json
2018/09/16 13:53:33 [I] Listing bucket `mimvp-backup` by prefix ``
Downloading _log/mimvp-backup/2018-09-16-13-10/part0.gz [1/12, 8.3%] ...
Downloading _log/mimvp-backup/2018-09-16-13-30/part0.gz [2/12, 16.7%] ...
2018/09/16 13:53:33 [I] Downloading _log/mimvp-backup/2018-09-16-13-10/part0.gz => /home/mimvp/data_bk/mimvp-blog-sql_files/qdownload/_log/mimvp-backup/2018-09-16-13-10/part0.gz
Downloading _log/mimvp-backup/2018-09-16-13-40/part0.gz [3/12, 25.0%] ...
2018/09/16 13:53:33 [I] Downloading _log/mimvp-backup/2018-09-16-13-30/part0.gz => /home/mimvp/data_bk/mimvp-blog-sql_files/qdownload/_log/mimvp-backup/2018-09-16-13-30/part0.gz
Downloading deleteBucketFile.txt [4/12, 33.3%] ...
2018/09/16 13:53:33 [I] Downloading _log/mimvp-backup/2018-09-16-13-40/part0.gz => /home/mimvp/data_bk/mimvp-blog-sql_files/qdownload/_log/mimvp-backup/2018-09-16-13-40/part0.gz
Downloading discuz.sql.tgz [5/12, 41.7%] ...
........
2018/09/16 13:53:35 [I] -------Download Result-------
2018/09/16 13:53:35 [I]     Total:        12
2018/09/16 13:53:35 [I]   Skipped:         0
2018/09/16 13:53:35 [I]    Exists:         0
2018/09/16 13:53:35 [I]   Success:        12
2018/09/16 13:53:35 [I]    Update:         0
2018/09/16 13:53:35 [I]   Failure:         0
2018/09/16 13:53:35 [I]  Duration:   2.015713693s
2018/09/16 13:53:35 [I] -----------------------------

See download log at path qdownload.log

 

4)查看下载的文件

# ll qdownload
total 36412
-rw-r--r-- 1 root root      582 Sep 16 13:53 deleteBucketFile.txt
-rw-r--r-- 1 root root   887032 Sep 16 13:53 discuz.sql.tgz
-rw-r--r-- 1 root root 13812336 Sep 16 13:53 discuz_x3.2.tgz
-rw-r--r-- 1 root root    84976 Sep 16 13:53 fundmanager.sql.tgz
-rw-r--r-- 1 root root     1056 Sep 16 13:53 listBucketFiles
drwxr-xr-x 3 root root     4096 Sep 16 13:53 _log
-rw-r--r-- 1 root root  5152984 Sep 16 13:53 mediawiki.sql.tgz
-rw-r--r-- 1 root root      761 Sep 16 13:53 qupload.json
-rw-r--r-- 1 root root     6267 Sep 16 13:53 qupload.log
-rw-r--r-- 1 root root 17311632 Sep 16 13:53 wordpress.sql.tgz

看起来没有12个文件呀,这是因为 _log 文件夹里包含了多个文件,用 tree 查看

# tree qdownload
qdownload
├── deleteBucketFile.txt
├── discuz.sql.tgz
├── discuz_x3.2.tgz
├── fundmanager.sql.tgz
├── listBucketFiles
├── _log
│   └── mimvp-backup
│       ├── 2018-09-16-13-10
│       │   └── part0.gz
│       ├── 2018-09-16-13-30
│       │   ├── part0.gz
│       └── 2018-09-16-13-40
│           └── part0.gz
├── mediawiki.sql.tgz
├── qupload.json
├── qupload.log
└── wordpress.sql.tgz

 

 

总结

本文介绍的大多与备份文件有关,有很多特性没有介绍,感兴趣的可以阅读七牛官网文档,很简单的。

qrsctl 用法很简单,完全的命令行模式,基本不涉及到 json 配置文件,CDN域名收费等,简单备份推荐 qrsctl 命令(米扑博客备份方案

qshell 用法比较复杂,支持复杂的 json 配置,CDN域名,增量同步,批量上传、下载等,参数较多

 

 

参考推荐

zip、tar 命令加密和解密压缩文件

cp、tar 命令排除文件和子目录

Linux下tar、bz、gz等压缩包的压缩和解压

WordPress:采用七牛云CDN免费加速

国内免费云存储厂商对比