
# 在线解压
OBS支持ZIP包上传后自动解压并存放在指定目录。
当您需要一次性上传大量的小文件时，可以将所有文件打包成ZIP包，上传之后压缩包可以自动解压，省时省力。OBS批量上传文件时有一些限制，参见[OBS批量上传文件](https://support.huaweicloud.com/obs_faq/obs_faq_0015.html)。
成功创建在线解压策略后，您上传到OBS的ZIP包如果能匹配解压策略，则会自动解压。创建策略前已存在的ZIP包不受影响。
您可以新建在线解压策略，也可以从其他桶复制已有在线解压策略。
#### 前提条件
使用在线解压特性的账号或子账号应具备Tenant administrator的用户角色。
#### 约束与限制
**权限限制：**
- 需要使用IAM的角色与策略授权功能，增加Tenant Administrator权限后才能设置、获取、删除在线解压策略。
- 在线解压源需使用IAM创建云服务委托，委托OBS获取桶内数据，上传数据到桶内。委托需要给OBS服务授予obs:object:PutObject、obs:object:GetObject、obs:object:AbortMultipartUpload权限。
**包及文件大小限制：**
- 单个ZIP包大小上限为**1GB**。
- 单个ZIP包内最多可包含65536个文件。
- ZIP包内，单个文件解压后最大为40GB。
**时间限制：**
- ZIP包解压任务最大时长为10分钟。
**功能限制：**
- ZIP包的后缀必须为zip。
- ZIP包名称中不可带有中文标点符号、特殊符号和特殊编码，如：\\/:\*?"\<\>\|@#￥。
- 针对ZIP包嵌套的场景，在线解压策略的事件类型需设置为ObjectCreated:\*或ObjectCreated:CompleteMultipartUpload。
- 目前不支持解压任务完成后给用户发送消息通知。
- 目前仅支持解压压缩算法为deflated的ZIP包，此处的压缩算法与WINRAR等软件提供的Store、Normal等压缩方法不等同。
- 解压路径加上压缩包解压出文件的文件名，总字符长度不可超过512，否则会导致解压失败。
- 目前不支持解压加密ZIP包。
- 不支持企业联邦用户使用在线解压功能，更多关于联邦用户的相关信息请参考[华为云账号、华为账号、IAM用户、企业联邦用户的关系](https://support.huaweicloud.com/iam_faq/iam_01_0615.html)和[身份提供商概述](https://support.huaweicloud.com/usermanual-iam/iam_08_0001.html)。
 
#### 注意事项
- 建议设置精准的前缀，同一个桶下的不同触发条件不能包含或重叠，触发条件指策略配置项中的事件、前缀以及后缀。 例如，同一个桶下的两个解压策略event-0001和event-0002，假设event-0001的前缀配置为aa，则event-0002的前缀不可配置为aaaa，因为两者具有包含关系。
  
- 当前缀置空时，解压策略将默认匹配该桶下的全部ZIP包，可能会触发循环执行。 例如，ZIP包"AA.zip"中包含ZIP包"BB.zip"。如果前缀置空，当"AA.zip"解压完成后，系统会继续对解压出的"BB.zip"进行解压。设置前缀可以规避该问题。
  
- 目标目录：ZIP包解压生成文件的存放目录，如果不设置，函数计算会将生成的文件存放到当前桶的主目录下。
- 如果ZIP包中包含非UTF-8或GB 2312编码的文件名或文件夹（文件目录）名，可能导致解压生成文件的文件名或文件目录名出现乱码、解压过程中断等情况，请使用UTF-8或GB 2312编码命名您的文件或文件目录。
- 上传归档存储的ZIP包，不会触发ZIP包解压，如果桶已开启归档数据直读功能，则可以触发ZIP包解压。上传深度归档存储的ZIP包，不会触发ZIP包解压。
- ZIP包解压处理单个压缩包的最长处理时间是10分钟，超过10分钟未完成会解压失败。
 
#### 新建在线解压策略
OBS支持通过[管理控制台](https://console.huaweicloud.com/console/?locale=zh-cn#/obs/manager/buckets)、API方式新建在线解压策略，不支持通过SDK、OBS Browser+、obsutil方式新建在线解压策略。
#### 使用OBS控制台
1. 在OBS[管理控制台](https://console.huaweicloud.com/console/?locale=zh-cn#/obs/manager/buckets)左侧导航栏选择"桶列表"。
2. 在桶列表中，单击待操作的桶，进入"对象"页面。
3. 在左侧导航栏单击"数据处理\>在线解压"，进入"在线解压"页面。
4. 单击"创建"。 
   图1创建在线解压策略   
   ![](https://support.huaweicloud.com/usermanual-obs/figure/zh-cn_image_0000001949019949.png "点击放大")
   
   
5. 配置在线解压策略，参数说明如[表1]所示。
   
    表1在线解压策略参数说明 
   | 参数     | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   |:---|:---|
   | 解压策略名称 | 输入方便记忆的策略名称。只能由大写或小写的英文字母、数字、下划线（_）和连字符（-）组成。长度为1\~256个字符。例如：event_0001。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   | 事件     | 事件类型。目前，OBS支持对以下事件类型进行在线解压。 - **ObjectCreated**：表示所有创建对象的操作，包含Put、Post、Copy对象以及合并分段任务。    - **Put**：使用Put方法上传对象。  - **Post**：使用Post方法上传对象。  - **Copy**：使用copy方法复制对象。  - **CompleteMultipartUpload** ：表示合并分段任务。 说明： 针对ZIP包嵌套的场景，在线解压策略的事件类型需设置为ObjectCreated或CompleteMultipartUpload。    |
   | 前缀     | 选填参数，配置触发在线解压的ZIP包名称前缀。不支持\\:\*?\\"\<\>\|特殊字符、不支持首个字符为"/"或包含"//"。前缀加后缀的长度不得超过512个字符。 - 配置，上传带有该前缀的ZIP包会触发在线解压。  - 置空，解压策略匹配所有上传的ZIP包。 注意： - 建议配置文件前缀。置空将默认匹配所有上传的ZIP包，可能会触发循环执行。  - 配置前缀时，前缀需包含对象存放的所有目录层级。 例如，对象名为example123，对象的路径为bucket/file/example123，如果想配置前缀为example，则前缀需配置为"file/example"。                                                                                                                                         |
   | 后缀     | 解压策略将匹配名称中带有该后缀的压缩包。默认为.zip，且当前仅支持ZIP格式。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   | 是否覆盖   | 当解压出的对象与桶内已有对象同名时的处理方式。 - 不覆盖跳过：保留桶内已有对象，跳过同名对象，不进行解压。  - 不覆盖，重命名：不覆盖已有对象，解压出的同名对象以文件的CRC32值重命名。  - 覆盖：保留解压出的对象，删除桶内已有同名对象。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   | 解压路径   | 选填参数，文件解压后存放的路径。不支持\\:\*?\\"\<\>\|特殊字符，不支持以英文句号（.）开头或结尾，不支持包含两个以上相邻的斜杠（/）。长度为0-1023个字符。 - 配置：路径必须以"/"结尾，ZIP包解压后将存放在配置路径的同名文件夹下。 如果桶内没有与路径同名文件夹，则系统会自动创建一个文件夹并将解压对象存放在该文件夹下。   - 置空：ZIP包解压后将存放在桶的主目录下。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
   | IAM委托  | 请使用云服务为OBS、配置策略包含OBS OperateAccess的委托。 如果无符合上述规则的委托，请新建委托后再选择。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
      
   
   
6. 单击"确定"，完成在线解压策略创建。
 
#### 使用API
[设置在线解压策略](https://support.huaweicloud.com/api-obs/obs_04_0148.html)
#### 复制在线解压策略
OBS支持通过[管理控制台](https://console.huaweicloud.com/console/?locale=zh-cn#/obs/manager/buckets)方式复制在线解压策略，不支持通过API、SDK、OBS Browser+、obsutil方式复制在线解压策略。
1. 在OBS[管理控制台](https://console.huaweicloud.com/console/?locale=zh-cn#/obs/manager/buckets)左侧导航栏选择"桶列表"。
2. 在桶列表中，单击待操作的桶，进入"对象"页面。
3. 在左侧导航栏单击"数据处理\>在线解压"，进入"在线解压"页面。
4. 单击"复制"。
5. 选择复制源，即在线解压策略所在的源桶。 
   ![](https://support.huaweicloud.com/usermanual-obs/public_sys-resources/note_3.0-zh-cn.png)
   - 从源桶复在线解压策略的操作为增量复制，不会删除当前桶已存在的在线解压策略，与已存在的在线解压策略冲突的策略不会复制。
   
   - 源桶和目标桶的桶版本号都必须是3.0。
   
   - 您可以按需移除不需要复制的在线解压策略。
   
   - 单桶在线解压策略上限为10条，如果已有策略+复制策略的数量超过上限，将会复制失败，请先删除多余策略再进行复制。
    
   图2复制在线解压策略   
   ![](https://support.huaweicloud.com/usermanual-obs/figure/zh-cn_image_0000002553226345.png "点击放大")
   
   
6. 单击"确定"，将源桶的在线解压策略复制到当前桶。
 
