七牛雲——qshell一個神奇的工具

前言

qshell是利用七牛文檔上公開的API實現的一個方便開發者測試和使用七牛API服務的命令行工具。該工具設計和開發的主要目的就是幫助開發者快速解決問題。目前該工具融合了七牛存儲,CDN,以及其餘的一些七牛服務中常用到的方法對應的便捷命令,這個工具是真的好用!我目前使用過的有批量重命名,採集網上的資源到七牛雲空間!linux

工具

GitHub:https://github.com/qiniu/qshellgit

下載

該工具使用Go語言編寫而成,固然爲了方便不熟悉Go或者急於使用工具來解決問題的開發者,七牛雲提供了預先編譯好的各主流操做系統平臺的二進制文件供你們下載使用,因爲平臺的多樣性,七牛雲把這些二進制打包放到一個文件裏面,請你們根據下面的說明各自選擇合適的版原本使用。github

版本 支持平臺 連接
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平臺shell

(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文件中。寫入的內容爲:json

export PATH=$PATH:/home/jemy/tools

保存完畢以後,能夠經過兩種方式當即生效,其一爲輸入source ~/.zshrc或者source ~/.bashrc來使配置當即生效,或者徹底關閉命令行,而後從新打開一個便可,接下來就能夠在任何位置使用qshell命令了。windows

Windows平臺centos

(1)閃退問題
本工具是一個命令行工具,在Windows下面請先打開cmd終端,經過cmd終端來使用qshell便可,不要雙擊打開,不然會出現閃退現象。api

(2)任何位置運行
若是你但願能夠在任意目錄下使用qshell,請將qshell工具可執行文件所在目錄添加到系統的環境變量中。因爲Windows系統是圖形界面,因此方便一點。假設qshell.exe命令被解壓到路徑E:\jemy\tools目錄下面,那麼咱們把這個目錄放到系統的環境變量PATH裏面。

windows-qshell-path-settings.png

qshell使用

  1. 添加密鑰和帳戶名稱

該工具備兩類命令,一類須要鑑權,另外一類不須要。

須要鑑權的命令都須要依賴七牛帳號下的 AccessKey, SecretKeyName。因此這類命令運行以前,須要使用 account 命令來添加 AccessKeySecretKeyName
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信息,具體配置方法參考下面配置文件一節。

  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, api host, rs hsot, 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",
        "api": "",
        "rsf": ""
    }
}
  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 抓取 從亞馬遜存儲遷移數據到七牛存儲 文檔
相關文章
相關標籤/搜索