【最佳实践】OSS开源工具ossutil-过滤参数include/exclude

本文涉及的产品
对象存储 OSS,20GB 3个月
云备份 Cloud Backup,100GB 3个月
文件存储 NAS,50GB 3个月
简介: # 应用场景 某些用户在本地或者OSS上存放了不同类型的文件,比如jpg文件和pptx文件。用户希望在(批量)上传jpg文件的时候设置不同的meta和ACL,而(批量)上传pptx文件的时候设置另外的meta和ACL。

应用场景

某些用户在本地或者OSS上存放了不同类型的文件,比如jpg文件和pptx文件。用户希望在(批量)上传jpg文件的时候设置不同的meta和ACL,而(批量)上传pptx文件的时候设置另外的meta和ACL。

也有用户希望在下载的时候只下载满足某种模式的文件,比如access-2018-05.log。

还有些用户希望对已经上传到OSS上的某种模式的文件进行批量设置Meta或ACL。

为满足用户的上述需求,ossutil引入过滤参数include/exclude,并在ossutil-1.4.0版本中release。

ossutil的方案

支持的命令

目前ossutil支持过滤参数的命令如下。

  • cp(upload, download, copy)

    • 同时支持cp的同时设置meta或ACL
  • set-meta
  • set-acl

--include/--exclude参数格式

规则支持以下格式

  • *:匹配索引
  • ?:匹配单个字符
  • [sequence]:匹配sequence的任意字符
  • [!sequence]:匹配不在sequence的任意字符

注意:

  • 规则不支持带目录的格式,e.g.,--include "/usr//test/.jpg"
  • --include和--exclude可以出现多次
  • 当多个规则出现时,这些规则按从左往右的顺序应用
  • 指定--include/--exclude选项时,需同时指定--recursive选项

例如:

当前目录下包含3个文件:
testfile1.jpg
testfiel2.txt
testfile33.jpg

$ ossutil cp . oss://my-bucket/path --exclude '*.jpg'
上传testfile2.txt到oss://my-bucket/path/testfile2.txt

$ ossutil cp . oss://my-bucket/path --exclude '*.jpg' --include 'testfile*.jpg'
上传testfile1.jpg到oss://my-bucket/path/testfile1.jpg
上传testfile33.jpg到oss://my-bucket/path/testfile33.jpg
上传testfile2.txt到oss://my-bucket/path/testfile2.txt

$ ossutil cp . oss://my-bucket/path --exclude '*.jpg' --include 'testfile*.jpg' --exclude 'testfile?.jpg'
上传testfile2.txt到oss://my-bucket/path/testfile2.txt
上传testfile33.jpg到oss://my-bucket/path/testfile33.jpg

--meta选项

该选项在上传文件的同时设置object的meta信息。当指定--recursive选项时,会设置所有上传的objects的meta信息。

可选的header列表如下:

Accept-Encoding
Content-Type
Content-Disposition
Content-Encoding
Expires(time.RFC3339: 2006-01-02T15:04:05Z07:00)
X-Oss-Server-Side-Encryption
X-Oss-Object-Acl
Origin
Cache-Control
以及以X-Oss-Meta-开头的header

注意:

  • header不区分大小写,但value区分大小写。设置后将用指定的meta代替原来的meta。没有指定的HTTP HEADER将保留,没有指定的user meta将会被删除。

--acl选项

该选项在上传文件的同时设置object的acl信息。当指定--recursive选项时,会设置所有上传的objects的acl信息。

object的acl有四种:

public-read-write
public-read
private
default

acl的详细信息请参见:https://help.aliyun.com/document_detail/31867.html

例子

上传时过滤

$ ls testdir
dir1             test2.jpg        test3.jpg        testfile1020.txt testfile1021.txt testfile1022.txt

$ ls testdir/dir1
my.rtf          testfile103.txt testfile104.txt

$ ossutil cp testdir/ oss://tempb3 -rf --include '*.txt'
Succeed: Total num: 6, size: 51,200. OK num: 6(upload 5 files, 1 directories).
0.436030(s) elapsed

$ ossutil ls oss://tempb3
LastModifiedTime                   Size(B)  StorageClass   ETAG                                  ObjectName
2018-06-05 17:55:26 +0800 CST            0      Standard   D41D8CD98F00B204E9800998ECF8427E      oss://tempb3/dir1/
2018-06-05 17:55:26 +0800 CST        10240      Standard   1276481102F218C981E0324180BAFD9F      oss://tempb3/dir1/testfile103.txt
2018-06-05 17:55:26 +0800 CST        10240      Standard   1276481102F218C981E0324180BAFD9F      oss://tempb3/dir1/testfile104.txt
2018-06-05 17:55:26 +0800 CST        10240      Standard   1276481102F218C981E0324180BAFD9F      oss://tempb3/testfile1020.txt
2018-06-05 17:55:26 +0800 CST        10240      Standard   1276481102F218C981E0324180BAFD9F      oss://tempb3/testfile1021.txt
2018-06-05 17:55:26 +0800 CST        10240      Standard   1276481102F218C981E0324180BAFD9F      oss://tempb3/testfile1022.txt
Object Number is: 6
0.045585(s) elapsed

上传时过滤并设置meta/acl

$ ossutil cp testdir/ oss://tempb3 -rf --include '*.txt' --include '*.jpg' --exclude '*2*' --meta Cache-Control:no-cache#X-Oss-Meta-Test:with-pattern --acl public-read
Succeed: Total num: 4, size: 30,720. OK num: 4(upload 3 files, 1 directories).
0.160225(s) elapsed

$ ossutil ls oss://tempb3
LastModifiedTime                   Size(B)  StorageClass   ETAG                                  ObjectName
2018-06-05 17:54:19 +0800 CST            0      Standard   D41D8CD98F00B204E9800998ECF8427E      oss://tempb3/dir1/
2018-06-05 17:54:19 +0800 CST        10240      Standard   1276481102F218C981E0324180BAFD9F      oss://tempb3/dir1/testfile103.txt
2018-06-05 17:54:19 +0800 CST        10240      Standard   1276481102F218C981E0324180BAFD9F      oss://tempb3/dir1/testfile104.txt
2018-06-05 17:54:19 +0800 CST        10240      Standard   1276481102F218C981E0324180BAFD9F      oss://tempb3/test3.jpg
Object Number is: 4
0.047468(s) elapsed

$ ossutil stat oss://tempb3/test3.jpg
ACL                         : public-read   ===> As expected
Accept-Ranges               : bytes
Cache-Control               : no-cache
Content-Length              : 10240
Content-Md5                 : EnZIEQLyGMmB4DJBgLr9nw==
Content-Type                : image/jpeg
Etag                        : 1276481102F218C981E0324180BAFD9F
Last-Modified               : 2018-06-05 17:57:00 +0800 CST
Owner                       : 1207396368585152
X-Oss-Hash-Crc64ecma        : 3732451854539430063
X-Oss-Meta-Test             : with-pattern   ===> As expected
X-Oss-Object-Type           : Normal
X-Oss-Storage-Class         : Standard
0.065338(s) elapsed

设置Meta时过滤

$ ossutil ls oss://tempb3
LastModifiedTime                   Size(B)  StorageClass   ETAG                                  ObjectName
2018-06-05 17:59:33 +0800 CST            0      Standard   D41D8CD98F00B204E9800998ECF8427E      oss://tempb3/dir1/
2018-06-05 17:59:33 +0800 CST        10240      Standard   1276481102F218C981E0324180BAFD9F      oss://tempb3/dir1/my.rtf
2018-06-05 17:59:33 +0800 CST        10240      Standard   1276481102F218C981E0324180BAFD9F      oss://tempb3/dir1/testfile103.txt
2018-06-05 17:59:33 +0800 CST        10240      Standard   1276481102F218C981E0324180BAFD9F      oss://tempb3/dir1/testfile104.txt
2018-06-05 17:59:33 +0800 CST        10240      Standard   1276481102F218C981E0324180BAFD9F      oss://tempb3/test2.jpg
2018-06-05 17:59:33 +0800 CST        10240      Standard   1276481102F218C981E0324180BAFD9F      oss://tempb3/test3.jpg
2018-06-05 17:59:33 +0800 CST        10240      Standard   1276481102F218C981E0324180BAFD9F      oss://tempb3/testfile1020.txt
2018-06-05 17:59:33 +0800 CST        10240      Standard   1276481102F218C981E0324180BAFD9F      oss://tempb3/testfile1021.txt
2018-06-05 17:59:33 +0800 CST        10240      Standard   1276481102F218C981E0324180BAFD9F      oss://tempb3/testfile1022.txt
Object Number is: 9
0.049015(s) elapsed

$ ossutil set-meta oss://tempb3 'X-Oss-Meta-Test:With-Pattern' -rf --include "*.jpg" --include "*.txt" --exclude "*2*"
Succeed: Total 3 objects. Setted meta on 3 objects.
0.138041(s) elapsed

$ ossutil stat oss://tempb3/test3.jpg
ACL                         : default
Accept-Ranges               : bytes
Content-Length              : 10240
Content-Md5                 : EnZIEQLyGMmB4DJBgLr9nw==
Content-Type                : image/jpeg
Etag                        : 1276481102F218C981E0324180BAFD9F
Last-Modified               : 2018-06-05 18:01:48 +0800 CST
Owner                       : 1207396368585152
X-Oss-Hash-Crc64ecma        : 3732451854539430063
X-Oss-Meta-Test             : With-Pattern   ===> As expected
X-Oss-Object-Type           : Normal
X-Oss-Storage-Class         : Standard
0.203471(s) elapsed

$ ossutil stat oss://tempb3/dir1/testfile103.txt
ACL                         : default
Accept-Ranges               : bytes
Content-Length              : 10240
Content-Md5                 : EnZIEQLyGMmB4DJBgLr9nw==
Content-Type                : text/plain; charset=utf-8
Etag                        : 1276481102F218C981E0324180BAFD9F
Last-Modified               : 2018-06-05 18:01:48 +0800 CST
Owner                       : 1207396368585152
Vary                        : Accept-Encoding
X-Oss-Hash-Crc64ecma        : 3732451854539430063
X-Oss-Meta-Test             : With-Pattern   ===> As expected
X-Oss-Object-Type           : Normal
X-Oss-Storage-Class         : Standard
0.168456(s) elapsed

$ ossutil stat oss://tempb3/dir1/testfile104.txt
ACL                         : default
Accept-Ranges               : bytes
Content-Length              : 10240
Content-Md5                 : EnZIEQLyGMmB4DJBgLr9nw==
Content-Type                : text/plain; charset=utf-8
Etag                        : 1276481102F218C981E0324180BAFD9F
Last-Modified               : 2018-06-05 18:01:48 +0800 CST
Owner                       : 1207396368585152
Vary                        : Accept-Encoding
X-Oss-Hash-Crc64ecma        : 3732451854539430063
X-Oss-Meta-Test             : With-Pattern   ===> As expected
X-Oss-Object-Type           : Normal
X-Oss-Storage-Class         : Standard
0.164251(s) elapsed

总结

本文简单叙述了ossutil的--include/--exclude参数,目前cp、set-meta、set-acl命令支持该参数,同时cp上传的同时支持设置meta、ACL。该参数能帮助用户上传、下载、拷贝满足特定模式的文件、对象。

Reference

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
18天前
|
存储 人工智能 开发工具
AI助理化繁为简,速取代码参数——使用python SDK 处理OSS存储的图片
只需要通过向AI助理提问的方式输入您的需求,即可瞬间获得核心流程代码及参数,缩短学习路径、提升开发效率。
1247 3
AI助理化繁为简,速取代码参数——使用python SDK 处理OSS存储的图片
|
19天前
|
监控 Java 对象存储
监控与追踪:如何利用Spring Cloud Sleuth和Netflix OSS工具进行微服务调试
监控与追踪:如何利用Spring Cloud Sleuth和Netflix OSS工具进行微服务调试
36 1
|
1月前
|
负载均衡 Java 对象存储
负载均衡策略:Spring Cloud与Netflix OSS的最佳实践
负载均衡策略:Spring Cloud与Netflix OSS的最佳实践
41 2
|
3月前
|
存储 JSON 自然语言处理
OSS数据源一站式RAG最佳实践
本文介绍了如何使用OpenSearch LLM智能问答版通过OSS数据源一站式构建RAG系统。
7137 11
|
4月前
|
运维 Java Serverless
Serverless 应用引擎产品使用合集之是否提供工具来给OSS配置HTTPS证书
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
4月前
|
文字识别 算法 API
视觉智能开放平台产品使用合集之在调用接口传入的图片URL参数,文件在本地或者非上海地域OSS链接,该怎么办
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
|
5月前
|
存储 Cloud Native Serverless
云原生最佳实践系列 7:基于 OSS Object FC 实现非结构化文件实时处理
阿里云OSS对象存储方案利用函数计算FC,在不同终端请求时实时处理OSS中的原图,减少衍生图存储,降低成本。
|
5月前
|
存储 运维 监控
运维编排最佳实践:将运维编排任务执行记录投递到OSS/SLS
运维编排服务(Operation Orchestration Service),简称OOS,是全面、免费的云上自动化运维平台,提供运维任务的管理和执行。典型使用场景包括:事件驱动运维,批量操作运维,定时运维任务,跨地域运维等,OOS为重要运维场景提供审批,通知等功能。OOS帮您实现标准化运维任务,从...
运维编排最佳实践:将运维编排任务执行记录投递到OSS/SLS
|
5月前
|
存储 分布式计算 监控
操作审计最佳实践:将阿里云操作日志持续投递到您的 SLS/OSS
操作审计(ActionTrail)帮助您监控并记录阿里云账号的活动,包括通过阿里云控制台、OpenAPI、开发者工具对云上产品和服务的访问和使用行为,记录为操作日志。 操作审计支持所有阿里云账号的免开通服务,默认为所有账号记录并存储近 90 天的日志。但在实际应用中,受法律法规和企业审计标准的要求,...
338 0
|
3月前
|
机器学习/深度学习 人工智能 专有云
人工智能平台PAI使用问题之怎么将DLC的数据写入到另一个阿里云主账号的OSS中
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。

相关产品

  • 对象存储