七牛云——qshell一个神奇的工具
前言
qshell是利用七牛文档上公开的API实现的一个方便开发者测试和使用七牛API服务的命令行工具。该工具设计和开发的主要目的就是帮助开发者快速解决问题。目前该工具融合了七牛存储,CDN,以及其他的一些七牛服务中经常使用到的方法对应的便捷命令,这个工具是真的好用!我目前使用过的有批量重命名,采集网上的资源到七牛云空间!
工具
GitHub:https://github.com/qiniu/qshell
下载
该工具使用Go语言编写而成,当然为了方便不熟悉Go或者急于使用工具来解决问题的开发者,七牛云提供了预先编译好的各主流操作系统平台的二进制文件供大家下载使用,由于平台的多样性,七牛云把这些二进制打包放到一个文件里面,请大家根据下面的说明各自选择合适的版本来使用。
| 版本 | 支持平台 | 链接 |
|---|---|---|
| qshell v2.4.0 | Windows X86 | 下载 |
| qshell v2.4.0 | Windows amd64 | 下载 |
| qshell v2.4.0 | Linux X86 | 下载 |
| qshell v2.4.0 | Linux amd64 | 下载 |
| qshell v2.4.0 | Linux Arm | 下载 |
| qshell v2.4.0 | Mac OS | 下载 |
安装
该工具由于是命令行工具,所以只需要从上面的下载之后即可使用。其中文件名和对应系统关系如下:
| 文件名 | 描述 |
|---|---|
| qshell_linux_x86 | Linux 32位系统 |
| qshell_linux_x64 | Linux 64位系统 |
| qshell_windows_x86.exe | Windows 32位系统 |
| qshell_windows_x64.exe | Windows 64位系统 |
| qshell_darwin_x64 | Mac 64位系统,主流的系统 |
Linux和Mac平台
(1)权限
如果在Linux或者Mac系统上遇到Permission Denied的错误,请使用命令chmod +x qshell来为文件添加可执行权限。这里的qshell是上面文件重命名之后的简写。
(2)任何位置运行
对于Linux或者Mac,如果希望能够在任何位置都可以执行,那么可以把qshell所在的目录加入到环境变量$PATH中去。假设qshell命令被解压到路径/home/jemy/tools目录下面,那么我们可以把如下的命令写入到你所使用的bash所对应的配置文件中,如果是/bin/bash,那么就是~/.bashrc文件,如果是/bin/zsh,那么就是~/.zshrc文件中。写入的内容为:
export PATH=$PATH:/home/jemy/tools
保存完毕之后,可以通过两种方式立即生效,其一为输入source ~/.zshrc或者source ~/.bashrc来使配置立即生效,或者完全关闭命令行,然后重新打开一个即可,接下来就可以在任何位置使用qshell命令了。
Windows平台
(1)闪退问题
本工具是一个命令行工具,在Windows下面请先打开cmd终端,通过cmd终端来使用qshell即可,不要双击打开,否则会出现闪退现象。
(2)任何位置运行
如果你希望可以在任意目录下使用qshell,请将qshell工具可执行文件所在目录添加到系统的环境变量中。由于Windows系统是图形界面,所以方便一点。假设qshell.exe命令被解压到路径E:\jemy\tools目录下面,那么我们把这个目录放到系统的环境变量PATH里面。

qshell使用
- 添加密钥和账户名称
该工具有两类命令,一类需要鉴权,另一类不需要。
需要鉴权的命令都需要依赖七牛账号下的 AccessKey, SecretKey和 Name。所以这类命令运行之前,需要使用 account 命令来添加 AccessKey ,SecretKey和Name 。
Name是用户可以自定义的字符串,用来唯一表示AccessKey/SecretKey账户,qshell会对添加的每一个账户信息加密保存,可以使用自命令user进行切换,切换账户的时候,需要使用账户唯一标识
Name。
$ qshell account <Your AccessKey> <Your SecretKey> <Your Name>
其中name表示该账号的名称, 如果ak, sk, name首字母是"-", 需要使用如下的方式添加账号, 这样避免把该项识别成命令行选项:
$ qshell account -- <Your AccessKey> <Your SecretKey> <Your Name>
可以连续使用qshell account 添加账号ak, sk, name信息,qshell会保存这些账号的信息, 可以使用qshell user命令列举账号信息,在各个账号之间切换, 删除账号等。
如果使用的2.3.0之前的版本account命令记录的账户信息,需要先使用qshell user clean清楚保存的账户信息,然后使用qshell account命令重新记录账户信息。
也可以使用qshell的配置文件添加access_key和secret_key信息,具体配置方法参考下面配置文件一节。
- 添加完账户后,就可以使用qshell上传,下载文件了
账户管理
qshell支持多种方式的账户管理:
- 使用qshell account 记录账户信息到本地的数据库
- 使用qshell -C 配置文件的方式来设置账户信息
- 有的qshell子命令支持通过--access-key, --secret-key选项来设置ak/sk信息
那么有可能上面三种方式都提供了账户的信息,因此这三种方式有个优先级(从高到低):
3 > 2 > 1
也就是说,如果命令行提供了ak/sk那么使用命令行的信息;如果没有提供就使用配置文件中的信息,如果配置文件没有提供ak/sk, 那么会去本地数据库查找当前的用户。
使用qshell user子命令可以用来管理记录的多账户信息。
- qshell user ls可以列举账户下所有的账户信息
- qshell user cu 可以用来切换账户
- qshell user cu 不携带的话会切换到最近的上个账户;比如我在A账户做完操作后,使用qshell user cu B到了B 账户,那么使用qshell user cu可以切回到A账户.
- qshell user lookup 查找用户是否在本地数据库中
是使用qshell account 记录的时候的名字,这个名字可以任意指定。
开启命令的自动补全
linux上,使用bash
在centos上,需要安装bash-completion包,默认该包没有安装
$ yum install bash-completion -y
给当前的bash加入自动补全, 运行命令
$ source <(qshell completion bash)
也可以把这个配置加入bash的启动文件中,这样到bash启动的时候,会自动加载qshell的补全配置:
$ echo "source <(qshell completion bash)" >> ~/.bashrc
Mac上,使用zsh
把如下代码加入zsh的启动文件中~/.zshrc, 然后source ~/.zshrc
if [ $commands[qshell] ]; then
source <(qshell completion zsh)
fi
命令选项
该工具还有一些有用的选项参数如下:
| 参数 | 描述 |
|---|---|
| -d | 设置是否输出DEBUG日志,如果指定这个选项,则输出DEBUG级别的日志 |
| -h | 打印命令列表帮助信息,遇到参数忘记的情况下,可以使用该命令 |
| -v | 打印工具版本,反馈问题的时候,请提前告知工具对应版本号 |
| -C | qshell配置文件, 其配置格式请看下一节 |
| -L | 使用当前工作路径作为qshell的配置目录 |
配置文件
- 配置文件格式支持json, 如果需要使用配置文件,需要在家目录下创建文件名为.qshell.json的json文件
- 配置文件可以配置如io host, api host, rs hsot, rsf host, 这些如果没有指定,程序会自动选择
- 配置文件支持设置ak, sk
例子:
- 默认官方的列举空间的文件使用的是rsf.qiniu.com域名,如果因为某种原因,比如私有存储,需要替换使用rs-test.qiniu.com这个域名的话,那么只需要
在家目录下创建文件名字为.qshell.json的配置文件,文件内容为
{
"hosts": {
"rsf": "rs-test.qiniu.com"
}
}
如果想要更改io host为io-test.qiniu.com的话,只需要继续在上面的hosts中添加,如下:
{
"hosts": {
"rs": "rs-test.qiniu.com",
"io": "io-test.qiniu.com"
}
}
同理如果全部修改的话
{
"hosts": {
"rs": "rs-test.qiniu.com",
"io": "io-test.qiniu.com",
"api": "",
"rsf": ""
}
}
- 如果不想使用qshell account ak sk name的方式记录密钥信息,也可以在配置文件中指定ak, sk
{
"access_key": "",
"secret_key": "",
}
这样qshell会优先使用配置文件中配置的ak/sk信息,如果在这个配置文件中没有找到密钥信息,那么会去qshell account记录的本地数据库寻找.
命令列表
存储相关命令
| 命令 | 类别 | 描述 | 详细 |
|---|---|---|---|
| account | 账号 | 设置或显示当前用户的AccessKey和SecretKey |
文档 |
| batchdelete | 删除 | 批量删除七牛空间中的文件,可以直接根据listbucket的结果来删除 |
文档 |
| delete | 删除 | 删除七牛空间中的一个文件 | 文档 |
| batchchgm | 修改 | 批量修改七牛空间中文件的MimeType | 文档 |
| chgm | 修改 | 修改七牛空间中的一个文件的MimeType | 文档 |
| batchchtype | 修改 | 批量修改七牛空间中的文件的存储类型,支持普通存储(0)和低频存储(1) | 文档 |
| chtype | 修改 | 修改七牛空间中的一个文件的存储类型,支持普通存储(0)和低频存储(1) | 文档 |
| batchexpire | 修改 | 批量修改七牛空间中的文件的生存时间 | 文档 |
| expire | 修改 | 修改七牛空间中的一个文件的生存时间 | 文档 |
| batchcopy | 拷贝 | 批量复制七牛空间中的文件到另一个空间 | 文档 |
| copy | 拷贝 | 复制七牛空间中的一个文件 | 文档 |
| batchmove | 移动 | 批量移动七牛空间中的文件到另一个空间 | 文档 |
| move | 移动 | 移动或重命名七牛空间中的一个文件 | 文档 |
| batchrename | 重命名 | 批量重命名七牛空间中的文件 | 文档 |
| batchstat | 查询 | 批量查询七牛空间中文件的基本信息 | 文档 |
| stat | 查询 | 查询七牛空间中一个文件的基本信息 | 文档 |
| buckets | 查询 | 获取当前账号下所有的空间名称 | 文档 |
| domains | 查询 | 获取指定空间的所有关联域名 | 文档 |
| listbucket | 列举 | 列举七牛空间里面的所有文件 | 文档 |
| listbucket2 | 列举 | 列举七牛空间里面的所有文件 | 文档 |
| fput | 上传 | 以文件表单的方式上传一个文件 | 文档 |
| rput | 上传 | 以分片上传的方式上传一个文件 | 文档 |
| qupload | 上传 | 同步数据到七牛空间, 带同步进度信息,和数据上传完整性检查(配置式) | 文档 |
| qupload2 | 上传 | 同步数据到七牛空间, 带同步进度信息,和数据上传完整性检查(命令式) | 文档 |
| qdownload | 下载 | 从七牛空间同步数据到本地,支持只同步某些前缀的文件,支持增量同步 | 文档 |
| get | 下载 | 下载存储空间中的文件 | 文档 |
| fetch | 抓取 | 从Internet上抓取一个资源并存储到七牛空间中 | 文档 |
| batchfetch | 抓取 | 从Internet上抓取一个资源并存储到七牛空间中 | 文档 |
| sync | 抓取 | 从Internet上抓取一个资源并存储到七牛空间中,适合大文件的场合 | 文档 |
| abfetch | 抓取 | 异步抓取网络资源到七牛存储空间 | 文档 |
| m3u8delete | m3u8 | 根据流媒体播放列表文件删除七牛空间中的流媒体切片 | 文档 |
| m3u8replace | m3u8 | 修改流媒体播放列表文件中的切片引用域名 | 文档 |
| batchsign | 其他 | 批量根据资源的公开外链生成资源的私有外链 | 文档 |
| dircache | 其他 | 输出本地指定路径下所有的文件列表 | 文档 |
| prefetch | 其他 | 更新七牛空间中从源站镜像过来的文件 | 文档 |
| privateurl | 其他 | 生成私有空间资源的访问外链 | 文档 |
CDN 相关的命令
| 命令 | 描述 | 详细 |
|---|---|---|
| cdnrefresh | 批量刷新cdn的访问外链或目录 | 文档 |
| cdnprefetch | 批量预取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编码 | 文档 |
| reqid | 七牛自定义头部X-Reqid解码工具 | 文档 |
| qetag | 根据七牛的qetag算法来计算文件的hash | 文档 |
| saveas | 实时处理的saveas链接快捷生成工具 | 文档 |
音视频处理相关命令
| 命令 | 类别 | 描述 | 详细 |
|---|---|---|---|
| pfop | 提交 | 提交异步音视频处理请求 | 文档 |
| prefop | 查询 | 查询七牛数据处理的结果 | 文档 |
签名类命令
| 命令 | 类别 | 描述 | 详细 |
|---|---|---|---|
| token | 其他 | 计算upToken, Qbox token, Qiniu Token | 文档 |
其他存储类工具
| 命令 | 类别 | 描述 | 详细 |
|---|---|---|---|
| alilistbucket | 列举 | 列举阿里OSS空间里面的所有文件 | 文档 |
| awslist | 列举 | 列举亚马逊的存储空间 | 文档 |
| awsfetch | 抓取 | 从亚马逊存储迁移数据到七牛存储 | 文档 |
七牛云——qshell一个神奇的工具的更多相关文章
- 七牛云 qshell 使用
七牛云 qshell 控制台工具上传 命令:qshell fput another1 demo.txt /users/tianyang/demo.txt ======================= ...
- 七牛云图床及MPIC工具使用
考虑到图片更容易被人接受,但是大量图片又会延迟博客加载速度.因此,个人感觉可以把静态文件资源托管在云端,这样加载的话就不至于太慢. 注册七牛云 实名验证通过 创建文件存储 内容管理-上传图片 下载Mp ...
- 七牛云qshell工具定时备份空间文件到本地
qshell 是利用七牛文档上公开的 API实现的一个方便开发者测试和使用七牛API服务的命令行工具,使用该工具可以实现很多的功能,今天就分享一下利用qshell定时备份空间文件到本地 1.下载qsh ...
- Typora + 七牛云图床快速配置,告别手动上传图片!
大家好,我是zeroing,本文将介绍关于 Typora 软件如何配置七牛云图床,实现图片即插即用,可以先看一下最终效果! 可以看到图片借助 Typora 软件自动将本地存储转化为第三方图片网络链接 ...
- 七牛云整合Ueditor的ThinkPHP版本
首先去七牛云官网下载phpSDK工具放在Think/library/Vendor下. ueditor后台调用方法: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...
- thinkphp3.2使用七牛云上传文件
最近项目中用到了七牛云服务,来分享一下thinkphp使用七牛云来进行文件上传 1.首先在七牛云创建一个空间,例如空间名为test.获取secrectKey,accessKey 2.在thinkphp ...
- 七牛云创建存储空间并绑定自定义域名-https协议
七牛云创建存储空间并绑定自定义域名-https协议 一.准备 0.绑定自定义域名的前提:你起码拥有过一个备案过的域名[一级域名] 1.在七牛云创建一个存储空间 2.存储空间绑定自定义域名(cdn加速) ...
- 使用qshell备份七牛云存储文件
qshell是利用七牛文档上公开的API实现的一个方便开发者测试和使用七牛API服务的命令行工具.我们可以利用它来将七牛云上存储的文件备份到本地. 它提供Mac OSX, Linux, Windows ...
- Linux下七牛云存储qrsync命令行上传同步工具
原址:https://m.aliyun.com/yunqi/ziliao/54370 VPS数据备份是一个重要的工作,之前在文章:使用七牛云存储自动备份VPS数据分享过使用七牛云存储提供的工具QRSB ...
随机推荐
- 十分钟读懂JavaScript原型和原型链
原型(prototype)这个词来自拉丁文的词proto,意谓“最初的”,意义是形式或模型.在JavaScript中,原型的探索也有很多有趣的地方,接下来跟随我的脚步去看看吧. 原型对象释义 每一个构 ...
- [转帖]Stack Overflow上188万浏览量的提问:Java 到底是值传递还是引用传递?
Stack Overflow上188万浏览量的提问:Java 到底是值传递还是引用传递? http://www.itpub.net/2019/12/03/4567/ 在逛 Stack Overfl ...
- 异常处理和UDP Socket套接字
一.异常处理 1.什么是异常处理: 程序在运行过程中出现了不可预知的错误,并且该错误没有对应的处理机制,那么就会以异常的形式表达出来,造成的影响就是整个程序无法再正常进行. 2.异常的结构: 1.异常 ...
- SQL SERVER 查询所有表大小
DECLARE @T TABLE ( [name] VARCHAR(max), [rows] INT, reserved VARCHAR(max), data_size VARCHAR(max), i ...
- Springcloud的版本依赖问题(最全,包含springCloud所有的版本)
版权声明:本文为博主原创文章,遵循CC 4.0 BY版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_42105629/article/detai ...
- ssm动态sql语句
1.将上面的元素分为四组来演示,分别为:[if,where,trim],[if,set,trim],[choose,when,otherwise],[foreach] ________________ ...
- Spring-Cloud之Sleuth链路追踪-8
一.Spring Cloud Sleuth 是Spring Cloud 的一个组件,它的主要功能是在分布式系统中提供服务链路追踪的解决方案. 二.为什么需要Spring Cloud Sleuth? 微 ...
- permission
import 'package:flutter/material.dart'; import 'dart:io'; import 'dart:async'; import 'package:rxdar ...
- ora121 tips
1. 900929 - Linux: STORAGE_PARAMETERS_WRONG_SET and "mmap() failed" Solution Increase the ...
- Objective-C中的@dynamic 、@synthesize
Objective-C中的@dynamic 一.@dynamic与@synthesize的区别 @property有两个对应的词,一个是@synthesize,一个是@dynamic.如果@synth ...