本文介绍osscmd的使用示例。

注意 osscmd操作命令已整合到 ossutil中,工具已于2019年7月31日下线,给您带来的不便敬请谅解。

安装配置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>
        <Rule>
            <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>
      <Rule>
        <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:
    404
    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