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

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: # 应用场景 某些用户在本地或者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,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
7月前
|
存储 弹性计算 安全
对象存储OSS快速上手——ossutil工具管理OSS
本实验是对象存储OSS进阶实验。通过本实验,用户可学会如何使用ossutil工具在Linux环境下用命令管理oss,完成文件上传下载等操作。
1195 0
|
23天前
|
存储 Cloud Native Serverless
云原生最佳实践系列 7:基于 OSS Object FC 实现非结构化文件实时处理
阿里云OSS对象存储方案利用函数计算FC,在不同终端请求时实时处理OSS中的原图,减少衍生图存储,降低成本。
|
10月前
|
SQL 存储 监控
通过sdk查看oss投递(新版)延迟情况最佳实践
在投递任务中,日志服务会将运行日志写入到给定的logstore中,因而可以使用SDK来查看投递任务的当前状态,并进行批量查询,以了解多个Project和投递任务的状态。下面以查看oss投递的延迟为例,介绍客户提供操作步骤和常见的使用场景,以帮助客户更加方便地监控和管理投递任务。
通过sdk查看oss投递(新版)延迟情况最佳实践
|
对象存储
阿里云OSS的图片参数m_lfit是干什么的?底层原理是什么?
阿里云OSS的图片参数m_lfit是干什么的?底层原理是什么?
815 0
|
存储 数据采集 运维
Alibaba Cloud Lens for OSS最佳实践
——其冀 阿里云智能产品专家
Alibaba Cloud Lens for OSS最佳实践
|
对象存储 Python
Python文件上传Minio和阿里Oss工具 | Python工具
Python文件上传Minio和阿里Oss工具 | Python工具
|
Linux Go 对象存储
ossutil迁移日志文件至阿里云OSS
ossutil支持在Windows、Linux、macOS等系统中运行,您可以根据实际环境下载和安装合适的版本。
553 0
|
SQL 分布式计算 关系型数据库
Hive 数仓迁移 JindoFS/OSS 数据湖最佳实践
Hive 数仓是大多数迁移客户都会遇到的场景。在迁移过程中,不建议同时在新集群进行业务升级(比如从 Hive on MR 迁移到 Hive on Tez 或 Spark SQL等),这些业务升级可以在迁移完成后进行。1. 元数据同步Hive 元数据是对于 Hive 表来说非常关键,除了表结构信息,里面还记录着 Hive 表与底层文件系统的关联关系,许多上层服务都依赖 Hive 元数据提供服务。a.
569 0
|
存储 SQL 机器学习/深度学习
OSS加速器最佳实践-总述篇
OSS加速器最佳实践(总述篇)本最佳实践提供OSS加速器相关的信息和适合的场景,面向对oss和数据湖相关技术有一定了解的开发者。     大家可以通过这俩篇先做一些了解相关文档:《配置OSS加速器》https://help.aliyun.com/document_detail/190726.html《OSS加速器介绍》https://developer.aliyun.com/article/780
OSS加速器最佳实践-总述篇
|
1月前
|
Java API 开发工具
如何用阿里云 oss 下载文件
阿里云对象存储服务(OSS)提供了多种方式下载文件,以下讲解下各种方式的下载方法
866 1

相关产品

  • 对象存储