本文介绍osscmd的使用示例。
osscmd于2019年7月31日下线,阿里云不再继续维护更新。osscmd操作命令已整合到ossutil中,推荐您使用 ossutil 。
安装配置osscmd
在Linux或者Windows上下载SDK安装包后,解压缩后即可使用osscmd。
使用osscmd时直接调用Python osscmd即可获取相应的说明。每种命令有两种执行模式。以执行gs命令查询用户所创建的Bucket为例:
-
方法1:不指定ID和KEY,osscmd从默认文件中读取ID和KEY。
$ python osscmd gs can't get accessid/accesskey, setup use : config --id=accessid --key=accesskey
说明如果出现这样的提示,表明没有配置好ID和KEY,见 方法2 中提示的配置命令。
如果配置好ID和KEY,并且ID和KEY有效,执行
$ python osscmd gs 2021-07-19 08:11 test-oss-sample Bucket Number is: 1
-
方法2:直接在命令中指定ID和KEY,osscmd从命令行中读取ID和KEY。如果ID和KEY有效,执行后得到以下结果。
$ python osscmd gs --id=your_id --key=your_key --host=your_endpoint 2021-07-19 08:11 test-oss-sample Bucket Number is: 1
如果要配置用户的ID和KEY到默认的文件中,请运行如下命令用来配置访问OSS所需要的ID和KEY。默认的OSS HOST为oss.aliyuncs.com。
$python osscmd config --id=your_id --key=your_key --host=your_endpoint
如果出现类似“Your configuration is saved into ”的提示,表明ID和KEY已经保存成功。
基础操作
-
列出创建的Bucket
$python osscmd getallbucket
如果是初次使用OSS的用户且没有创建Bucket,则输出为空。
-
创建Bucket
创建一个名为mybucketname的Bucket。
$python osscmd createbucket mybucketname
创建该Bucket可能不成功。原因是OSS中的Bucket名字是全局唯一的,此时您需要换一个Bucket名字,如在Bucket名字中加入特定的日期。
-
查看是否创建成功
$python osscmd getallbucket
如果没有成功请检查osscmd返回的错误信息。
-
查看Object
成功创建Bucket后,查看Bucket中有哪些Object。
$python osscmd list oss://mybucketname/
由于Bucket中还没有object,输出为空。
-
上传object
向Bucket中上传一个Object。假如本地文件名叫local_existed_file,其MD5值如下所示。
$ md5sum local_existed_file 7625e1adc3a4b129763d580ca0a78e44 local_existed_file $ python osscmd put local_existed_file oss://mybucketname/test_object
说明md5sum
为 Linux 命令, Windows下无此命令。 -
再次查看Object
如果创建成功,再次查看Bucket中有哪些Object。
$python osscmd list oss://mybucketname/
-
下载Object
从Bucket中下载Object到本地文件,并比对下载的文件的MD5值
$ python osscmd get oss://mybucketname/test_object download_file $ md5sum download_file 7625e1adc3a4b129763d580ca0a78e44 download_file
说明md5sum
为 Linux 命令, Windows下无此命令。 -
删除Object
$ python osscmd delete oss://mybucketname/test_object
-
删除Bucket
说明如果Bucket中还有Object,则这个Bucket不能被删除。
$ python osscmd deletebucket mybucketname
使用lifecycle
-
配置一个lifecycle的xml格式的文本文件
<LifecycleConfiguration> <ID>1125</ID> <Prefix>log_backup/</Prefix> <Status>Enabled</Status> <Expiration> <Days>2</Days> </Expiration> </Rule> </LifecycleConfiguration>
表示删除Bucket下以log_backup/ 为前缀,并且相对当前时间超过2天的Object。详细的规则配置可以参考 API文档
-
写入lifecycle
python osscmd putlifecycle oss://mybucket lifecycle.xml 0.150(s) elapsed
-
读取lifecycle
python osscmd getlifecycle oss://mybucket <?xml version="1.0" encoding="UTF-8"?> <LifecycleConfiguration> <ID>1125</ID> <Prefix>log_backup/</Prefix> <Status>Enabled</Status> <Expiration> <Days>2</Days> </Expiration> </Rule> </LifecycleConfiguration> 0.027(s) elapsed
-
删除lifecycle
python osscmd deletelifecycle oss://mybucket 0.139(s) elapsed
-
读取lifecyle
python osscmd getlifecycle oss://mybucket Error Headers: [('content-length', '288'), ('server', 'AliyunOSS'), ('connection', 'close'), ('x-oss-request-id', '54C74FEE5D7F6B24E5042630'), ('date', 'Tue, 27 Jan 2015 08:44:30 GMT'), ('content-type', 'application/xml')] Error Body: <?xml version="1.0" encoding="UTF-8"?> <Error> <BucketName>mybucket</BucketName> <Code>NoSuchLifecycle</Code> <Message>No Row found in Lifecycle Table.</Message> <RequestId>54C74FEE5D7F6B24E5042630</RequestId> <HostId>mybucket.oss-maque-hz-a.alibaba.net</HostId> </Error> Error Status: getlifecycle Failed!
防盗链设置
-
允许空referer访问
$osscmd putreferer oss://test --allow_empty_referer=true 0.004(s) elapsed
-
获取referer配置
$osscmd getreferer oss://test <?xml version="1.0" encoding="UTF-8"?> <RefererConfiguration> <AllowEmptyReferer>true</AllowEmptyReferer> <RefererList /> </RefererConfiguration>
-
不允许空referer,只允许referer为www.example.com的请求
$osscmd putreferer oss://test --allow_empty_referer=false --referer='www.example.com' 0.092(s) elapsed
-
获取referer配置
$osscmd getreferer oss://test <?xml version="1.0" encoding="UTF-8"?> <RefererConfiguration> <AllowEmptyReferer>false</AllowEmptyReferer> <RefererList> <Referer>www.example.com</Referer> </RefererList> </RefererConfiguration>
-
不允许空referer,只允许referer为www.example.com和www.example.org的请求
$osscmd putreferer oss://test --allow_empty_referer=false --referer='www.example.com,www.example.org'
-
获取设置的referer
$osscmd getreferer oss://test <?xml version="1.0" encoding="UTF-8"?> <RefererConfiguration> <AllowEmptyReferer>false</AllowEmptyReferer> <RefererList> <Referer>www.example.com</Referer> <Referer>www.example.org</Referer> </RefererList> </RefererConfiguration>
使用logging
-
设置logging
$osscmd putlogging oss://mybucket oss://myloggingbucket/mb
-
获取设置的logging
$osscmd getlogging oss://mybucket