且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

OAS的使用——控制台和命令行工具

更新时间:2022-08-14 12:52:12

OAS的使用——控制台和命令行工具

[TOC]

使用需求

OAS的使用——控制台和命令行工具

  1. 使用命令行工具上传三个大小不一的文件。
  2. 使用命令行工具查看三个已上传文件的信息,其中最大的文件使用multipart方式上传。
  3. 使用命令行工具下载三个文件。
  4. 使用命令行工具删除这三个文件。

控制台的使用

使用参考官方文档中的控制台使用

命令行工具的使用

OAS提供命令行工具oascmd.py,命令行工具可以给用户一个快捷的使用工具,不需要任何代码编写就可以使用OAS的功能,在实际使用中命令行工具更多作为一种测试工具。

工具的获取和环境配置(基于Linux)

按照官方文档,获取命令工具的方式有两种:使用pip以及使用源码安装。这里使用pip进行安装。

#命令行工具依托于Python SDK
sudo pip install oassdk

安装成功可以这样进行验证:
OAS的使用——控制台和命令行工具
然后再验证Python SDK是否安装正确:
OAS的使用——控制台和命令行工具
没有异常表示正确安装。

根据授权设置进行授权配置:

oascmd.py config [-h] --host host --id id --key key [--port port] [--config-file filename]

OAS的使用——控制台和命令行工具
配置过后,oascmd.py会将配置的信息写到一个文件里,因此如果有配置修改,可以直接修改这个文件。

测试一下

oascmd.py ls

OAS的使用——控制台和命令行工具
测试显示我们已经连接上oas服务,现在可以进行各种操作了。

新建Vault

为了测试,新建一个Vault。

oascmd.py createvault oas://oas_archive_jf

OAS的使用——控制台和命令行工具
可以看到,名为“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

OAS的使用——控制台和命令行工具

注意:
上传成功的标志是命令行返回了Archive ID,如果上传完马上查看Vault的信息,可能是看不到变化的,因为这些信息并不是实时的(官方文档对此多处说明)。
OAS的使用——控制台和命令行工具

大文件上传

oascmd.py上传文件大于100M时会自动原则multipart方式上传。这里使用multipart上传剩下的那个大文件。

oascmd.py upload oas://oas_archive_jf ubuntu-14.04.2-desktop-i386.iso -p 64M

OAS的使用——控制台和命令行工具

注意:
上传过程请注意保存Archive id和upload id.

等待上传所有的16个part,上传过程中查看multipart job列表:

oascmd.py listmupload oas://oas_archive_jf

OAS的使用——控制台和命令行工具

如果有某些part上传失败,可以使用upload命令上传失败的part.

oascmd.py upload oas://oas_archive_jf /home/jale/oas_blog_code/files/ubuntu-14.04.2-desktop-i386.iso 2B5C82CCB2004034A0E6BC53E31D14E7

OAS的使用——控制台和命令行工具

注意:
这个时候的-p选项已经不需要了,命令会自动上传未成功上传的part。
与直接上传相同,上传结果不是实时的,因此使用oascmd.py getvaultdesc 不会有变化。
OAS的使用——控制台和命令行工具
经过一段时间之后(24-48小时?),OAS会更新信息到元数据库,这时就可以看到信息了:
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

OAS的使用——控制台和命令行工具

执行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

OAS的使用——控制台和命令行工具
注意:
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等信息,总体来说,命令行工具和控制台主要应用于文件数目少的情况,更多应该是使用这个两个工具进行测试。
官方文档内容比较完整,在使用过程中有任何出错或者不清楚的地方,可以参考官方文档。