七牛存储批量操作 - qshell
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设置在命令的配置文件参数中。
C:\Users\Administrator\.qshell\account.json
{
"access_key" : "**************************",
"secret_key" : "**************************"
}
或者使用命令设置
qshell account [access_key] [secret_key]
3. 批量上传
命令格式: qshell qupload [并发数量] [配置文件名]
upload.conf
{
"src_dir" : "D:\\qiniu\\upload_dir",
"bucket" : "mybucket"
}
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 [并发数量] [配置文件名]
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。
这里比较麻烦的是,如何获得[保存待删除文件名的文本]。
find my_dir -type f >file_name_list.txt
在Linux下可以直接使用find命令,在Windows下需要借助Cygwin执行find命令。本人实践时,先将需要操作的目录,通过qdownload命令下载到download_dir目录。然后,在download_dir目录执行上述命令,导出my_dir目录下全部文件名列表。
# 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中文件名对应文件。
qshell batchdelete mybucket file_name_list.txt