OAS的使用——控制台和命令行工具
[TOC]
使用需求
- 使用命令行工具上传三个大小不一的文件。
- 使用命令行工具查看三个已上传文件的信息,其中最大的文件使用multipart方式上传。
- 使用命令行工具下载三个文件。
- 使用命令行工具删除这三个文件。
控制台的使用
使用参考官方文档中的控制台使用。
命令行工具的使用
OAS提供命令行工具oascmd.py,命令行工具可以给用户一个快捷的使用工具,不需要任何代码编写就可以使用OAS的功能,在实际使用中命令行工具更多作为一种测试工具。
工具的获取和环境配置(基于Linux)
按照官方文档,获取命令工具的方式有两种:使用pip以及使用源码安装。这里使用pip进行安装。
#命令行工具依托于Python SDK
sudo pip install oassdk
安装成功可以这样进行验证:
然后再验证Python SDK是否安装正确:
没有异常表示正确安装。
根据授权设置进行授权配置:
oascmd.py config [-h] --host host --id id --key key [--port port] [--config-file filename]
配置过后,oascmd.py会将配置的信息写到一个文件里,因此如果有配置修改,可以直接修改这个文件。
测试一下
oascmd.py ls
测试显示我们已经连接上oas服务,现在可以进行各种操作了。
新建Vault
为了测试,新建一个Vault。
oascmd.py createvault oas://oas_archive_jf
可以看到,名为“oas_archive_jf”的新Vault已经创建成功。
上传文件
从官方文档上可以看出,上传分为小文件上传和大文件上传,大文件上传建议使用multipart上传,这样可以避免上传失败要重传整个文件。
注意:
注意保存上传过程中返回的archive_id, 后面对Archive的一些操作需要依赖Archive_id,archive_id是OAS中对archive的唯一标识。
小文件上传
上传文件名为image001.jpg和matplotlib-1.4.3.tar.gz.
oascmd.py upload oas://oas_archive_jf image001.jpg
oascmd.py upload oas://oas_archive_jf matplotlib-1.4.3.tar
注意:
上传成功的标志是命令行返回了Archive ID,如果上传完马上查看Vault的信息,可能是看不到变化的,因为这些信息并不是实时的(官方文档对此多处说明)。
大文件上传
oascmd.py上传文件大于100M时会自动原则multipart方式上传。这里使用multipart上传剩下的那个大文件。
oascmd.py upload oas://oas_archive_jf ubuntu-14.04.2-desktop-i386.iso -p 64M
注意:
上传过程请注意保存Archive id和upload id.
等待上传所有的16个part,上传过程中查看multipart job列表:
oascmd.py listmupload oas://oas_archive_jf
如果有某些part上传失败,可以使用upload命令上传失败的part.
oascmd.py upload oas://oas_archive_jf /home/jale/oas_blog_code/files/ubuntu-14.04.2-desktop-i386.iso 2B5C82CCB2004034A0E6BC53E31D14E7
注意:
这个时候的-p选项已经不需要了,命令会自动上传未成功上传的part。
与直接上传相同,上传结果不是实时的,因此使用oascmd.py getvaultdesc 不会有变化。
经过一段时间之后(24-48小时?),OAS会更新信息到元数据库,这时就可以看到信息了:
上传完成之后,使用listmpart获取已上传列表:
#uploadid 为上传时返回的MultiPartUpload ID
oascmd.py listmpart oas://oas_archive_jf [uploadid]
使用fileetag命令计算文件的etag:
#大文件做etag计算需要一定时间,请耐心等待
oascmd.py fileetag ubuntu-14.04.2-desktop-i386.iso
执行part合并:
#uploadid是之前保存的上传id,size为文件大小,tree_etag是上一步计算所得的第二行
oascmd.py completemupload oas://oas_archive_jf [uploadid] size tree_etag
注意:
执行completemupload之后上传才真正成功,与
上传相同的,oas的信息不会实时更新。
查看信息
使用createjob获取Vault信息:
oascmd.py createjob oas://oas_archive_jf
#job_id由上一条命令返回
oascmd.py fetch oas://oas_archive_jf [job_id] result
注意:
creatjob之后会返回一个job id,我们使用这个job id来下载结果,但是这个job的执行是异步的,因此需要等待最多4个小时才能下载。
下载文件
下载文件以ubuntu-14.04.2-desktop-i386.iso为例,之前保存的Archive id为:
2EC3F10EA3DE4AD3962F5FE207AE9341605CA9936DAD791B6F3AE2E1C35798E2486B8A0B0FF7B52B404FCEAC298514472B55D196EB2A1074229C6BAA48C38F2D
首先创建一个下载的Job:
oascmd.py createjob oas://oas_archive_jf 2EC3F10EA3DE4AD3962F5FE207AE9341605CA9936DAD791B6F3AE2E1C35798E2486B8A0B0FF7B52B404FCEAC298514472B55D196EB2A1074229C6BAA48C38F2D
注意:
命令返回一个jobid,请注意保存,job执行是异步的,需要最多等待4个小时才能完成。
job完成之后,使用jobid来下载结果:
#将结果保存到本地文件result
oascmd.py fetch oas://oas_archive_jf [jobid] result
删除文件
oascmd.py rm oas://vaultname [archiveId]
删除文件操作之后并未真正删除(考虑到用户误删需要恢复),在一段时间之后才会物理删除。
总结
web控制台和命令行工具使用起来非常直观,但是无法应对大量文件的情况。另外,在使用命令行工具时一定要注意保存Archive_id、upload_id等信息,总体来说,命令行工具和控制台主要应用于文件数目少的情况,更多应该是使用这个两个工具进行测试。
官方文档内容比较完整,在使用过程中有任何出错或者不清楚的地方,可以参考官方文档。