Shell Tools for Qiniu Cloud

Related tags

Miscellaneous qshell
Overview

qshell

LICENSE ut-check Go Report Card GitHub release codecov GoDoc

简介

qshell是利用七牛文档上公开的API实现的一个方便开发者测试和使用七牛API服务的命令行工具。该工具设计和开发的主要目的就是帮助开发者快速解决问题。目前该工具融合了七牛存储,CDN,以及其他的一些七牛服务中经常使用到的方法对应的便捷命令,比如b64decode,就是用来解码七牛的URL安全的Base64编码用的,所以这是一个面向开发者的工具,任何新的被认为适合加到该工具中的命令需求,都可以在ISSUE列表里面提出来,我们会尽快评估实现,以帮助大家更好地使用七牛服务。

下载

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

更新日志 查看

支持平台 链接
Windows X86 下载
Windows amd64 下载
Windows arm 下载
Linux X86 下载
Linux amd64 下载
Linux arm 下载
Linux arm64 下载
Mac OS(10.12以上) amd64 下载
Mac OS arm64 下载

安装

该工具由于是命令行工具,所以只需要从上面的下载之后即可使用。

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下面请先打开命令行终端,然后输入工具名称执行,不要双击打开,否则会出现闪退现象。

(2)任何位置运行 如果你希望可以在任意目录下使用qshell,请将qshell工具可执行文件所在目录添加到系统的环境变量中。由于Windows系统是图形界面,所以方便一点。假设qshell.exe命令被解压到路径E:\jemy\tools目录下面,那么我们把这个目录放到系统的环境变量PATH里面。

windows-qshell-path-settings.png

qshell使用

  1. 添加密钥和账户名称

该工具有两类命令,一类需要鉴权,另一类不需要。

需要鉴权的命令都需要依赖七牛账号下的 AccessKey, SecretKeyName。所以这类命令运行之前,需要使用 account 命令来添加 AccessKeySecretKeyNameName是用户可以自定义的字符串,用来唯一表示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信息,具体配置方法参考下面配置文件一节。

  1. 添加完账户后,就可以使用qshell上传,下载文件了

账户管理

qshell支持多种方式的账户管理:

  1. 使用qshell account 记录账户信息到本地的数据库
  2. 使用qshell -C 配置文件的方式来设置账户信息
  3. 有的qshell子命令支持通过--access-key, --secret-key选项来设置ak/sk信息

那么有可能上面三种方式都提供了账户的信息,因此这三种方式有个优先级(从高到低): 3 > 2 > 1

也就是说,如果命令行提供了ak/sk那么使用命令行的信息;如果没有提供就使用配置文件中的信息,如果配置文件没有提供ak/sk, 那么会去本地数据库查找当前的用户。

使用qshell user子命令可以用来管理记录的多账户信息。

  1. qshell user ls可以列举账户下所有的账户信息
  2. qshell user cu 可以用来切换账户
  3. qshell user cu 不携带的话会切换到最近的上个账户;比如我在A账户做完操作后,使用qshell user cu B到了B 账户,那么使用qshell user cu可以切回到A账户.
  4. 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的配置目录

配置文件

  1. 配置文件格式支持json, 如果需要使用配置文件,需要在家目录下创建文件名为.qshell.json的json文件
  2. 配置文件可以配置如 io host, up host, uc host, api host, rs host, rsf host, 这些如果没有指定,程序会自动选择
  3. 配置文件支持设置 ak, sk

例子:

  1. 默认官方的列举空间的文件使用的是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",
        "uc": "uc-test.qiniu.com",
        "api": "api-test.qiniu.com",
        "up": "up-test.qiniu.com",
        "rsf": "rsf-test.qiniu.com"
    }
}
  1. 如果不想使用qshell account ak sk name的方式记录密钥信息,也可以在配置文件中指定ak, sk
{
   "access_key": "",
   "secret_key": "",
}

这样qshell会优先使用配置文件中配置的ak/sk信息,如果在这个配置文件中没有找到密钥信息,那么会去qshell account记录的本地数据库寻找.

命令列表

存储相关命令

命令 类别 描述 详细
account 账号 设置或显示当前用户的AccessKeySecretKey 文档
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 抓取 从亚马逊存储迁移数据到七牛存储 文档

问题反馈

如果您有任何问题,请写在ISSUE列表里面,我们会尽快回复您。

Comments
  • Failed to query region when using qupload

    Failed to query region when using qupload

    OS: macOS 11.3.1 (20E241)

    Version(https://github.com/qiniu/qshell/releases/tag/v2.6.0):

    $ ~/.local/bin/qshell version
    v2.6.0
    

    Config:

    {
        "src_dir"            :   "./public/",
        "bucket"             :   "$BUCKET",
        "overwrite"          :   true,
        "check_exists"       :   true,
        "check_hash"         :   true,
        "check_size"         :   true,
        "rescan_local"       :   true
     }
    

    Error in log:

    2021/05/20 14:10:42.274 [I]  Uploading file $SRC: $DST
    2021/05/20 14:10:42.275 [E]  Form upload file `$SRC` => `$DST` failed due to nerror `query region error, Get "uc.qbox.me/v2/query?ak=$AK&bucket=$BUCKET&": unsupported protocol scheme ""`
    
    opened by jeffguorg 11
  • 第二次运行 upload 没有任何效果

    第二次运行 upload 没有任何效果

    $ bin/qshell/qshell-darwin-x64 qupload2 -src-dir=./public -bucket=xxx -key-prefix=cdn/ 上传成功 $ touch ./public/newfile1.js $ bin/qshell/qshell-darwin-x64 qupload2 -src-dir=./public -bucket=xxx -key-prefix=cdn/ 再次运行 upload,发现 newfile1.js 根本没有上传

    请问怎么破?

    opened by FrankFang 8
  • 七牛对象存储服务 - fput子命令执行后不会调用CDN缓存刷新API,在使用时存在困扰

    七牛对象存储服务 - fput子命令执行后不会调用CDN缓存刷新API,在使用时存在困扰

    使用的是最新发布qshell-linux-x64

    fput.md文档中没有提及这个API,官方upload文档也没有。但实际上,需要手动调用API。

    作为用户,感受到的是使用官方工具成功上传后,给出的 外链 没有更新,请考虑改进文档或工具。

    详情请见这个帖子:https://www.v2ex.com/t/404735

    opened by delight09 8
  • qupload 报错

    qupload 报错

    ubuntu@pt-bj-bgp3:/data/qiniu$ ./qshell qupload 10 sync.conf Listing local sync dir, this can take a long time, please wait patiently... 2015/12/10 20:10:59 [ERROR][qshell] qupload.go:240: Invalid cache line `33 14449019115095594'

    -------Upload Result------- Total: 0 Success: 0 Failure: 0 Skipped: 0

    Duration: 3.575149ms

    opened by anythink-wx 7
  • batchdelete指定文件后不能删除

    batchdelete指定文件后不能删除

    首先我list列举了bucket中的文件:

    qshell --prefix assets listbucket2 www-xiaoyulive-top -o qshell/list/www-xiaoyulive-top.delete.txt
    

    列表文件类似:

    assets/css/0.styles.390a36af.css	89826	Fo5WbhTAc4OjvTIRzOVMc0y3hcwE	15621319093033464	text/css	0
    assets/css/0.styles.a6c63fa1.css	89826	Fj6mIOh2C0WSguvuY0Y6quJvvefN	15620592425384934	text/css	0
    assets/img/search.683d46b0.svg	217	Ft8hiqY6U1WzqEIfYllK9zn7K8vI	15621319050267653	image/svg+xml	0
    assets/js/1.af40de90.js	44914	Fpfb-0TFZDyHzjl3BuoP3KAc9e5t	15621319093993632	application/javascript	0
    ...
    

    然后再使用batchdelete指定此文件:

    qshell batchdelete www-xiaoyulive-top --force  -i qshell/list/www-xiaoyulive-top.delete.txt
    

    但是提示我没有这些文件,错误提示类似:

    $ yarn deploy:clean
    yarn run v1.15.2
    $ qshell batchdelete www-xiaoyulive-top --force -s qshell/list/www-xiaoyulive-top.success.txt -e qshell/list/www-xiaoyulive-top.failure.txt -i qshell/list/www-xiaoyulive-top.delete.txt
    Batch delete error:
    Delete 'www-xiaoyulive-top' => 'a' failed, Code: 612, Error: no such file or directory
    Delete 'www-xiaoyulive-top' => 'a' failed, Code: 612, Error: no such file or directory
    Delete 'www-xiaoyulive-top' => 'a' failed, Code: 612, Error: no such file or directory
    Delete 'www-xiaoyulive-top' => 'a' failed, Code: 612, Error: no such file or directory
    Delete 'www-xiaoyulive-top' => 'a' failed, Code: 612, Error: no such file or directory
    Delete 'www-xiaoyulive-top' => 'a' failed, Code: 612, Error: no such file or directory
    ...
    

    测试了下,只是截取了文件中每一行的第一个字母

    20190703174738

    opened by quanzaiyu 6
  • 建议维护官方可用作 npm script 项目依赖的 npm package

    建议维护官方可用作 npm script 项目依赖的 npm package

    建议参考或者 fork qshell-cli,创建可以及时更新的 npm package。

    npm package 的好处在该 github repo 的 readme 中有说明:

    为什么把 qshell 当成一个 NPM 的依赖

    像 qshell 这样的部署工具一般只有运维人员才会用到,但对于提倡 DevOps 文化的团队来说,把部署工具也放进项目依赖里会非常方便。 这一点也是受到了 12factor 里 显式声明依赖关系 这一条的启发。

    也就是普通开发者可以不用关心如下问题:

    • 不同操作系统下如何下载 qshell
    • 如何进行权限设置
    • 如何设置 account(只需要在项目中添加 .qshell/account.json文件即可)
    • 如何使用 qshell 批量删除、批量上传、cdnrefsh ……命令(只需要有一个人了解,并编写成相应的 npm scripts 指令即可)
    opened by KingMario 6
  • Windows 2.7.0 版本上传报错

    Windows 2.7.0 版本上传报错

    问题描述

    最新版本(windows-amd64 v2.7.0)上传有问题,指定文件夹上传后,它把路径重复拼接了,导致上传的时候报错

    重现步骤

    1. 使用命令 qshell qupload2 --src-dir=F:\test\folder --bucket=test --key-prefix=test/path/ --overwrite=true --thread-count=10

    期望结果?

    将folder文件夹下的所有文件上传至 test/path/ 路径下

    实际结果?

    例如对于folder文件夹下的 1.txt 文件: 上传报错,qshell 读取文件的路径变成 F:\test\folder\F:\test\folder\1.txt 前缀也变成 test/path/F:/test/folder/1.txt

    使用 2.6.3 版本正常

    相关环境信息

    • 操作系统:windows
    • qshell版本: v2.7.0 amd64
    opened by mpetrel 5
  • qshell m3u8replace command error

    qshell m3u8replace command error

    • system: macOS Mojave 10.14.1 (18B75)
    • terminal: oh-my-zsh

    my command:

    qshell_darwin_x64 m3u8replace ts666 output/index.m3u8 http://hls.example.com
    

    Error detail:

    panic: runtime error: invalid memory address or nil pointer dereference
    [signal SIGSEGV: segmentation violation code=0x1 addr=0x10 pc=0x13626fa]
    
    goroutine 1 [running]:
    github.com/qiniu/api.v7/storage.(*FormUploader).put(0xc000146df8, 0x0, 0x0, 0x1523980, 0xc0001ee090, 0xc0001f0000, 0x92, 0x7ffeefbff87c, 0x11, 0xc000146c01, ...)
    	/Users/caijiaqiang/go/pkg/mod/github.com/qiniu/[email protected]+incompatible/storage/form_upload.go:164 +0x3a
    github.com/qiniu/api.v7/storage.(*FormUploader).Put(0xc000146df8, 0x0, 0x0, 0x1523980, 0xc0001ee090, 0xc0001f0000, 0x92, 0x7ffeefbff87c, 0x11, 0x16bdb00, ...)
    	/Users/caijiaqiang/go/pkg/mod/github.com/qiniu/[email protected]+incompatible/storage/form_upload.go:139 +0x113
    github.com/qiniu/qshell/iqshell.(*BucketManager).M3u8ReplaceDomain(0xc00000e2b8, 0x7ffeefbff876, 0x5, 0x7ffeefbff87c, 0x11, 0x7ffeefbff88e, 0x10, 0x0, 0x0)
    	/Users/caijiaqiang/go/src/github.com/qiniu/qshell/iqshell/m3u8.go:191 +0xe78
    github.com/qiniu/qshell/cmd.M3u8Replace(0x1a8bca0, 0xc000150a50, 0x3, 0x3)
    	/Users/caijiaqiang/go/src/github.com/qiniu/qshell/cmd/rs.go:464 +0xd3
    github.com/spf13/cobra.(*Command).execute(0x1a8bca0, 0xc000150960, 0x3, 0x3, 0x1a8bca0, 0xc000150960)
    	/Users/caijiaqiang/go/pkg/mod/github.com/spf13/[email protected]/command.go:766 +0x2cc
    github.com/spf13/cobra.(*Command).ExecuteC(0x1a87a20, 0x1a8fa60, 0x0, 0x1a91220)
    	/Users/caijiaqiang/go/pkg/mod/github.com/spf13/[email protected]/command.go:852 +0x2fd
    github.com/spf13/cobra.(*Command).Execute(0x1a87a20, 0xc000147f48, 0xc000147f88)
    	/Users/caijiaqiang/go/pkg/mod/github.com/spf13/[email protected]/command.go:800 +0x2b
    main.main()
    	/Users/caijiaqiang/go/src/github.com/qiniu/qshell/main.go:10 +0x31
    

    How to fix this error ? need help, thanks!

    And the m3u8 file content:

    #EXTM3U
    #EXT-X-VERSION:3
    #EXT-X-MEDIA-SEQUENCE:0
    #EXT-X-ALLOW-CACHE:YES
    #EXT-X-TARGETDURATION:3
    #EXTINF:2.908422,
    video-000.ts
    #EXTINF:1.905422,
    video-001.ts
    #EXTINF:2.005422,
    video-002.ts
    #EXTINF:2.005422,
    video-003.ts
    #EXTINF:1.772422,
    video-004.ts
    #EXTINF:1.905422,
    video-005.ts
    #EXTINF:1.905422,
    video-006.ts
    #EXTINF:1.944422,
    video-007.ts
    #EXTINF:1.871422,
    video-008.ts
    #EXTINF:1.838422,
    video-009.ts
    #EXTINF:2.005422,
    video-010.ts
    #EXTINF:2.708422,
    video-011.ts
    #EXTINF:1.771422,
    video-012.ts
    #EXTINF:2.005422,
    video-013.ts
    #EXTINF:1.704422,
    video-014.ts
    #EXTINF:1.804422,
    video-015.ts
    #EXT-X-ENDLIST
    
    opened by tuesleep 5
  • 使用 quopload, 每次都会把所有文件重新上传一遍.

    使用 quopload, 每次都会把所有文件重新上传一遍.

    {
       "src_dir"            :   "`隐去`",
       "access_key"         :   "`隐去`",
       "secret_key"         :   "`隐去`",
       "bucket"             :   "`隐去`",
       "file_list"          :   "/Users/mac/Documents/Qiniu_Tool/qshell-v1.8.1/ao.md",
       "zone"               :   "nb",
       "ignore_dir"         :   false,
       "key_prefix"         :   "",
       "up_host"            :   "http://upload.qiniu.com",
       "overwrite"          :   true,
       "check_exists"       :   true,
       "check_hash"         :   false,
       "check_size"         :   true,
       "skip_file_prefixes" :   ".git,bin",
       "skip_path_prefixes" :   "hello/,temp/",
       "skip_fixed_strings" :   ".svn",
       "skip_suffixes"      :   ".DS_Store,.exe",
       "rescan_local"       :   false,
       "log_file"           :   "upload.log",
       "log_level"          :   "info"
    }
    
    

    以上为配置.

    尝试过的解决办法...

    预测可能问题为:

    1. rescan_local: 已经反复设置为 true, false, 无效.
    2. check 打头的 3 个设置...反复改为 true, false, 无效.
    3. file_list: 已经重新做了快照...依旧无效.

    本机环境

    ╮(╯_╰)╭ MacOS Sierra

    opened by YixuanFranco 5
  • qdownload failed but the file is downloaded successfully

    qdownload failed but the file is downloaded successfully

    {
        "dest_dir"  : "/path/to/",
        "bucket"    : "tower",
        "access_key"    : "xxxx",
        "secret_key"    : "xxxx",
        "domain"    : "http://obd7m26p3.bkt.clouddn.com",
        "is_private": true,
        "prefix"    : "717buy_user/12.txt"
    }
    

    qshell qdownload does download the file but show like this:

    2016/08/17 12:13:27 [INFO][qshell] qdownload.go:170: Total:  1
    2016/08/17 12:13:27 [INFO][qshell] qdownload.go:171: Local:  0
    2016/08/17 12:13:27 [INFO][qshell] qdownload.go:172: Success:    0
    2016/08/17 12:13:27 [INFO][qshell] qdownload.go:173: Failure:    1
    2016/08/17 12:13:27 [INFO][qshell] qdownload.go:174: Duration:   432.707361ms
    

    I print out the resp and find resp.Header.get('Content-Length') failed. There is no 'Content-Length' in resp.Header. So I print out the req to get the URL like this: http://obd7m26p3.bkt.clouddn.com/717buy_user/12.txt?e=1471493749&token=xxxxx Use httpie to send this request and get the header which does contains 'Content-Length'. That's so weird. I try to help find which file could cause this error but I can't. Some other files in the same bucket can download successfully.

    opened by morefreeze 5
  • qupload错误 Invalid cache line

    qupload错误 Invalid cache line

    qshell qupload 300 qnconfig.cnf

    2016/07/11 21:34:32 [INFO][qshell] qupload.go:232: Use the last cached local sync dir file list ... 2016/07/11 21:34:32 [ERROR][qshell] qupload.go:340: Invalid cache line 14 14412684965838689

    ----------Upload Result---------- Total: 0 Success: 0 Failure: 0 Skipped: 0

    Duration: 5.370575ms

    opened by yondwell 5
  • support only config uc host & expire/batchexpire cancel expire time w…

    support only config uc host & expire/batchexpire cancel expire time w…

    变更背景描述

    jira issue链接

    • https://jira.qiniu.io/browse/KS-42
    • https://jira.qiniu.io/browse/KODO-16893

    主要变更点

    • [ ] fix bug
    • [x] new feature
    • [ ] 不兼容变更

    Checklist

    • [x] 已自测
    • [ ] 已更新Readme
    size/L needs-ok-to-test 
    opened by YangSen-qn 3
  • 访问私有化环境存储失败,通过配置文件指定endpoint不生效。

    访问私有化环境存储失败,通过配置文件指定endpoint不生效。

    问题描述

    配置文件不生效

    重现步骤

    1. 添加 -C参数,指定配置文件

    期望结果?

    qshell会到指定的endpoint获取bucket信息,而不是默认的http://rsf.qiniu.com/

    实际结果?

    qshell 访问了预期之外的http://rsf.qiniu.com/

    错误日志/截图/配置参数

    相关环境信息

    • 操作系统:centos7.6
    • qshell版本:2.6.3
    opened by yangras 1
  • 不支持后台常驻,以crontab定时运行,是不是我哪里写错了

    不支持后台常驻,以crontab定时运行,是不是我哪里写错了

    问题描述

    目前该工具支持增量上传的方式,仍然是重新运行上传命令,尚不支持后台常驻,自动检测更新进行同步的功能。 我采用liunx crontab方式定时运行此命令

    重现步骤

    crontab 测试运行命令:

              • qshell qupload .qshell.json
    1. .qshell.json配置文件: { "src_dir" : "/mnt/xiaoya/image", "bucket" : "showart", "up_host" : "http://upload-z2.qiniu.com", "ignore_dir" : false, "overwrite" : true, "check_exists" : true, "check_hash" : true, "check_size" : true, "rescan_local" : true, "log_file" : "upload.log", "log_level" : "info", "log_rotate" : 1, "log_stdout" : false, "file_type" : 0, "resumable_api_v2" : false, "resumable_api_v2_part_size" : 4194304 }

    期望结果?

    定时运行上传命令

    实际结果?

    image 执行但不生效

    错误日志/截图/配置参数

    相关环境信息

    • 操作系统:linux -> zsh
    • qshell版本: v2.6.3
    opened by ihsz-OldFriend 1
  • [Feature] 归档解冻功能

    [Feature] 归档解冻功能

    需求描述

    解冻 Object 的功能

    e.g. qshell restoreAr <Bucket> <Key>

    批量解冻 Object的功能

    e.g. qshell batchRestoreAr [--force] [--success-list <SuccessFileName>] [--failure-list <FailureFileName>] <Bucket> [-i <KeyFileList>]

    Qiniu API restore-archive

    其他相关建议

    enhancement 
    opened by leoleozhu 1
  • qshell account 无法添加账户

    qshell account 无法添加账户

    问题描述

    qshell account [--overwrite | -w]<Your AccessKey> <Your SecretKey> <Your Account Name>
    

    当<Your AccessKey>第一位是-符时,无法添加帐号信息,因为我的AK是-ouz-ZyTuXORG0LM-xxxx,即使我使用双引号,如"-ouz-ZyTuXORG0LM-xxxx",依旧报错。目前我只能创建一个新的密钥(第一位非-)使用。旧密钥无法使用qshell。

    同时我下载的qshell的地址是http://devtools.qiniu.com/qshell-linux-x64-v2.4.2.zip,版本应当是2.4.2,但是我使用./qshell --version显示的版本是qshell version v2.4.1 .

    重现步骤

    #添加双引号
    ./qshell account -w -ouz-ZyTuXORG0LM-xxxxxxx qUzEensC4xxxxxxxxxxx rains
    #不添加双引号
    ./qshell account -w "-ouz-ZyTuXORG0LM-xxxxxxx" "qUzEensC4xxxxxxxxxxx" rains
    

    期望结果?

    • 能够正常添加account
    • 同时能够正常使用

    实际结果?

    • 无法添加帐号

    错误日志/截图/配置参数

    $ ./qshell account -w "-ouz-ZyTuXORG0LM-xxxxxxx" "qUzEensC4xxxxxxxxxxx" rains
    Error: unknown shorthand flag: 'o' in -ouz-ZyTuXORG0LM-xxxxxxx
    Usage:
      qshell account [<AccessKey> <SecretKey> <Name>] [flags]
    
    Flags:
      -h, --help        help for account
      -w, --overwrite   overwrite account or not when account exists in local db, by default not overwrite
    
    Global Flags:
      -C, --config string   config file (default is $HOME/.qshell.json)
      -D, --ddebug          debug mode
      -d, --debug           debug mode
      -L, --local           use current directory as config file path
      -v, --version         show version
    
    unknown shorthand flag: 'o' in -ouz-ZyTuXORG0LM-xxxxxxx
    
    $ ./qshell account -w -ouz-ZyTuXORG0LM-xxxxxxx qUzEensC4xxxxxxxxxxx rains   
    Error: unknown shorthand flag: 'o' in -ouz-ZyTuXORG0LM-xxxxxxx
    Usage:
      qshell account [<AccessKey> <SecretKey> <Name>] [flags]
    
    Flags:
      -h, --help        help for account
      -w, --overwrite   overwrite account or not when account exists in local db, by default not overwrite
    
    Global Flags:
      -C, --config string   config file (default is $HOME/.qshell.json)
      -D, --ddebug          debug mode
      -d, --debug           debug mode
      -L, --local           use current directory as config file path
      -v, --version         show version
    
    unknown shorthand flag: 'o' in -ouz-ZyTuXORG0LM-xxxxxxx
    
    
    

    相关环境信息

    • 操作系统:archlinux
    • qshell版本:qshell version v2.4.1
    • qshell下载地址:http://devtools.qiniu.com/qshell-linux-x64-v2.4.2.zip
    bug documentation 
    opened by rainerosion 3
Releases(v2.9.2)
Owner
Qiniu Cloud
Connect Data, Redefine Value.
Qiniu Cloud
A Qiniu Storage filesystem for Laravel

Laravel filesystem Qiniu Qiniu storage for Laravel based on overtrue/flysystem-qiniu. Requirement PHP >= 5.5.9 Installation $ composer require "overtr

安正超 463 Dec 6, 2022
Supper quick use Aliyun OSS or Tencent COS or Qiniu Koa to get、put、delete Object.

An SDK integrating Alibaba cloud, Tencent cloud and qiniu cloud object storage

null 6 Sep 26, 2021
This shell script and PHP file create a browseable HTML site from the Zig standard library source.

Browseable Zig standard library This shell script and PHP file create a browseable HTML site from the Zig standard library source. The idea is to inve

Dave Gauer 3 Mar 20, 2022
A simple shell script which loads a magento environment

A simple shell script to load up a Magento environment and execute PHP code Very experimental and should only be ran on dev servers REQUIRES php pcntl

beeplogic 28 Feb 4, 2022
A webshell plugin and interactive shell for pentesting a Moodle instance.

Moodle webshell plugin for RCE A webshell plugin and interactive shell for pentesting a Moodle instance. Features Webshell plugin for Moodle. Execute

Podalirius 11 Oct 10, 2022
Nuber is an open source container management platform it provides a front end to manage your own cloud infrastructure, using Linux Containers virtualization technology

Nuber is an open source container management platform it provides a front end to manage your own cloud infrastructure, using Linux Containers virtualization technology

null 33 Dec 14, 2022
This script allows to bypass Oracle Cloud Infrastructure 'Out of host capacity' error immediately when additional OCI capacity will appear in your Home Region / Availability domain.

Resolving Oracle Cloud "Out of Capacity" issue and getting free VPS with 4 ARM cores / 24GB of memory Very neat and useful configuration was recently

Alexander Hitrov 323 Jan 6, 2023
Apache OpenWhisk is an open source serverless cloud platform

OpenWhisk OpenWhisk is a serverless functions platform for building cloud applications. OpenWhisk offers a rich programming model for creating serverl

The Apache Software Foundation 5.9k Jan 8, 2023
Like Cloud Drive Run on Raspbian + Nginx + PHP

Raspberry-Pi-Cloud Like Cloud Drive Run on Raspbian + Nginx + PHP I Made a Project Called Raspberry-Pi-Cloud. it's on testing stage help me to test it

null 1 Dec 25, 2021
A collection of samples that demonstrate how to call Google Cloud services from PHP.

PHP Docs Samples A collection of samples that demonstrate how to call Google Cloud services from PHP. See our other Google Cloud Platform github repos

Google Cloud Platform 875 Dec 29, 2022
A collection of samples that demonstrate how to call Google Cloud services from PHP.

PHP Docs Samples A collection of samples that demonstrate how to call Google Cloud services from PHP. See our other Google Cloud Platform github repos

Google Cloud Platform 796 Dec 22, 2021
Preparation notes for Magento 2 Certified Professional Cloud Developer exam

Overview Magento 2 Certified Professional Cloud Developer 1. Topics 13% 1 - Commerce Cloud Fundamentals (8 questions) 9% 2 - Local Environment (6 ques

Magento Notes 78 Dec 26, 2022
Google Cloud Storage for PHP

Google Cloud Storage for PHP Idiomatic PHP client for Cloud Storage. API documentation NOTE: This repository is part of Google Cloud PHP. Any support

Google APIs 281 Nov 10, 2022
A plain-language, step-by-step guide for the computer novice to build their own cloud.

This is a plain-language, step-by-step guide for the computer novice wanting to build their own cloud, looking to declare independence from Google and its ilk, to save on monthly hosting fees, or just learn a new skill.

Paul Knight 25 Nov 19, 2022
Opensource php wrapper to WhatsApp Cloud API.

WhatsApp Latest Cloud API Wrapper for PHP Opensource php wrapper to WhatsApp Cloud API. Features supported Sending messages Sending Media (images, aud

Novath Thomas 58 Nov 30, 2022
QuCheng cloud-native application delivery platform

开源轻量级应用交付平台 渠成云原生应用交付平台 是 北京渠成软件有限公司自主设计、研发的开源轻量级应用交付平台。它底层基于容器和Kubernetes技术,通过Helm进行应用的封装,提供了渠成云原生应用市场、服务管理、服务监控与告警、日志管理与审计、集群管理等平台功能,是一款使用简单,功能完备的云原

EasySoft 14 Dec 17, 2022
Start using Whatsapp Business Cloud API in your app

Use The Most Used Whatsapp's Cloud API Start using Whatsapp Business Cloud API in your app! Support us Investing on this package is defintely a good m

Ricardo Sawir 15 Dec 14, 2022
Google Cloud Orchestration Airflow for PHP

Google Cloud Orchestration Airflow for PHP Idiomatic PHP client for Google Cloud Orchestration Airflow. API documentation NOTE: This repository is par

Google APIs 1 Apr 28, 2022
Google Cloud Optimization for PHP

Google Cloud Optimization for PHP Idiomatic PHP client for Google Cloud Optimization. API documentation NOTE: This repository is part of Google Cloud

Google APIs 0 Sep 2, 2022