备份本地文件上传到七牛云存储
七牛云存储是米扑在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 工具。
本文米扑博客主要介绍上传备份米扑博客,使用到了 qshell、qrsctl 命令行工具
一、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> # 选项 c
会启用切片并行上传一个大文件(超过 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 | 账号 |
设置或显示当前用户的AccessKey 和SecretKey
|
文档 |
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
qshell qupload2 -src-dir=srcFile -bucket=mimvp-backup
qshell qdownload [ThreadCount
参数说明:
qupload :是用来将本地目录中的文件同步到七牛空间中的命令。
qupload2 :功能和 qupload 一致,不过 qupload2 通过命令行的方式来指定各个需要的参数
qdownload :将七牛空间中的文件同步到本地磁盘中,支持只同步带特定前缀或者后缀的文件,也支持在本地备份路径不变的情况下进行增量同步。 需要额外指出的是,将文件同步到本地都是走的七牛存储源站的流量而不是CDN的流量,因为CDN通常情况下会认为大量的文件下载操作是非法访问从而进行限制,因此该功能默认需要计费,如果希望享受10G的免费流量,请自行设置cdn_domain参数,如不设置,需支付源站流量费用,无法减免!
ThreadCount :并发上传的协程数量,默认为1,即文件一个个上传
注意:如上命令格式的参数,qshell 命令的批量同步上传(qupload)和下载(qdownload),都需要指定配置文件(
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]
运行日志:
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域名,增量同步,批量上传、下载等,参数较多
参考推荐:
版权所有: 本文系米扑博客原创、转载、摘录,或修订后发表,最后更新于 2019-02-05 05:57:34
侵权处理: 本个人博客,不盈利,若侵犯了您的作品权,请联系博主删除,莫恶意,索钱财,感谢!
转载注明: 备份本地文件上传到七牛云存储 (米扑博客)