Please enable Javascript to view the contents

七牛存储批量操作 - qshell

 ·  ☕ 3 分钟

1. 下载工具 - qshell

qshell 是利用七牛文档上公开的 API 实现的一个方便开发者测试和使用七牛API服务的命令行工具,使用 Go 语言编写而成。目前该工具融合了七牛存储, CDN ,以及其他的一些七牛服务中经常使用到的方法对应的便捷命令。

| 版本 | 支持平台 | 链接 | 更新日志 |
| ————- |:————-:| —–:|
| qshell v2.0.7 | Linux (32, 64位,arm平台), Windows(32, 64位), Mac OSX(32, 64位) | 下载 | 查看|

下载qshell命令zip包,解压。你会发现,里面有多个系统的qshell命令文件。选择适合自己系统的文件,重命名为qshell。为了任意目录都能使用qshell命令,建议将qshell文件拷贝至PATH中的某一个目录。比如,本人安装了GO,并将其bin目录加入了PATH,就直接qshell拷贝到C:/Go/bin/目录下即可。

2. 设置账号Key

新版的qshell需要将账户信息设置在单独的文件中。下面的Administrator,改为对应的账户名。key在七牛登录后页面的【个人面板】- 【秘钥管理】可以查看。旧版的qshell命令,key设置在命令的配置文件参数中。

1
2
3
4
5
C:\Users\Administrator\.qshell\account.json
{
    "access_key" : "**************************",
    "secret_key" : "**************************"
}

或者使用命令设置

1
qshell account [access_key] [secret_key]

3. 批量上传

命令格式: qshell qupload [并发数量] [配置文件名]

1
2
3
4
5
upload.conf
{
   "src_dir"            :   "D:\qiniu\upload_dir",
   "bucket"             :   "mybucket"
}
1
qshell qupload 20 upload.conf

上述命令的操作是,以每秒二十次的频率,上传D盘 qiniu/upload_dir 目录下的文件,至 bucket 名为 mybucket 下。
比如,有文件 D:/qiniu/upload_dir/te/tex.txt,上传之后在 mybucket 下有文件 te/tex.txt ,目录结构会保留,更多设置请参考官方文档。
Tips: 建议并发不要设置太高,会有文件遗漏上传。

4. 批量下载

命令格式: qshell qdownload [并发数量] [配置文件名]

1
2
3
4
5
6
7
8
down.conf
{
   "dest_dir"            :  "D:\qiniu\download_dir",
   "domain"             :   "http://xxx.com1.z0.glb.qiniucdn.com",  
   "bucket"             :   "mybucket",
   "prefix"             :   "test/" 
}
qshell  qdownload 20 down.conf

上述命令的操作是,以每秒二十次的频率,从http://xxx.com1.z0.glb.qiniucdn.com 空间的mybucket,下载全部以test/开头的文件,保存在本地的 D:/qiniu/download_dir 目录下。
比如,在 mybucket 下有文件 test/te/tex.txt,下载之后会有 D:/qiniu/download_dir/test/te/tex.txt,目录结构会保留,更多设置请参考官方文档。

5. 批量删除

命令格式: qshell batchdelete [-force] [空间名] [保存待删除文件名的文本]

删除操作无法恢复,执行 batchdelete 时,出于谨慎策略需要输入验证码。如果不想输入验证码,可以带上可选参数 -force。

这里比较麻烦的是,如何获得[保存待删除文件名的文本]。

1
find my_dir -type f >file_name_list.txt

在 Linux 下可以直接使用 find 命令,在 Windows 下需要借助 Cygwin 执行 find 命令。本人实践时,先将需要操作的目录,通过 qdownload 命令下载到 download_dir 目录。然后,在download_dir 目录执行上述命令,导出 my_dir 目录下全部文件名列表。

1
2
3
4
5
6
7
8
# file_name_list.txt
my_dir/testapp/requirements.txt
my_dir/testapp/settings.py
my_dir/testapp/test_processes.py
my_dir/testapp/test_tasks.py
my_dir/testapp/__init__.py
my_dir/tests/test_stackless.py
my_dir/tests/__init__.py

最后执行 batchdelete 命令删除指定 bucket 的文件。这里就是删除 mybucket 下,上述file_name_list.txt中文件名对应文件。

1
qshell batchdelete  mybucket file_name_list.txt

微信公众号
作者
微信公众号