mc pipe
语法
mc pipe 命令将内容从 STDIN 流式传输到目标对象。
以下命令将 STDIN 的内容写入 S3 兼容存储。
echo "My Meeting Notes" | mc pipe s3/engineering/meeting-notes.txt
该命令具有以下语法:
mc [GLOBALFLAGS] pipe                              \
                 TARGET                            \
                 [--attr "string"]                 \
                 [--checksum "string"]             \
                 [--enc-kms "string"]              \
                 [--enc-s3 "string"]               \
                 [--enc-c "string"]                \
                 [--storage-class, --sc "string"]  \
                 [--tags "string"]
- 方括号 - []表示可选参数。
- 参数在同一行表示它们是相互依赖的。 
- 使用管道 - |运算符分隔的参数是相互排斥的。
在终端/壳中运行命令之前,将示例复制到文本编辑器中并按需进行修改。
在 RELEASE.2023-01-11T03-14-16Z 版本发生变更: mc pipe 现在支持并发上传,以提高大流量的吞吐量。
参数
- TARGET
- Required该命令应运行的 别名 或前缀的完整路径。 
- --attr
- Optional为对象添加自定义元数据。 将键值对指定为 KEY=VALUE\;格式,每个键值对之间用反斜杠和分号(\;)分隔。 例如,--attr key1=value1\;key2=value2\;key3=value3。
- --checksum
- Optional在 RELEASE.2024-10-02T08-27-28Z 版本加入. 为已上传的对象添加校验和。 有效值为: - MD5-CRC32-CRC32C-SHA1-SHA256该标志需要服务器尾随标头并与 AWS 或 MinIO 目标配合使用。 
- --enc-kms
- 使用服务器端 SSE-KMS 加密 和客户端管理的密钥加密或解密对象。 - 该参数接受键值对,格式为 - KEY=VALUE。- KEY- 对象的完整路径,即 - alias/bucket/path/object.ext。- 您可以只指定顶层路径,以便对该路径中的所有操作使用单个加密密钥。 - VALUE- 指定外部 KMS 上的现有数据密钥。 - 有关创建数据密钥,请参阅 - mc admin kms key create参考。- 例如: - --enc-kms "myminio/mybucket/prefix/object.obj=mybucketencryptionkey" - 重复该参数可指定多个加密密钥。 - 指定一个前缀的路径,以便对该路径上的所有匹配对象进行加密: - --enc-kms "myminio/mybucket/prefix/=mybucketencryptionkey" 
- --enc-s3
- Optional使用服务器端 SSE-S3 加密 和 KMS 管理的密钥加密或解密对象。 将对象的完整路径指定为 alias/bucket/prefix/object。例如: --enc-s3 "myminio/mybucket/prefix/object.obj" 您可以多次指定该参数,以表示要加密的不同对象: --enc-s3 "myminio/mybucket/foo/fooobject.obj" --enc-s3 "myminio/mybucket/bar/barobject.obj" 指定一个前缀的路径,以便对该路径上的所有匹配对象进行加密: --enc-s3 "myminio/mybucket/foo" 
- --enc-c
- Optional使用服务器端 SSE-C 加密 和客户端管理的密钥加密或解密对象。 该参数接受键值对,格式为 KEY=VALUE。KEY对象的完整路径,即 alias/bucket/path/object.ext。您可以只指定顶层路径,以便对该路径中的所有操作使用单个加密密钥。 VALUE指定用于 SSE-C 加密的 32 字节 RawBase64 编码密钥 或 64 字节十六进制编码密钥。 原始 Base64 编码 拒绝 =填充键。 省略填充或使用支持 RAW 格式的 Base64 编码器。- KEY- 对象的完整路径为- alias/bucket/path/object。
- VALUE- 用于加密对象的 32 字节 RAW Base64 编码数据密钥。
 例如: # RawBase64-Encoded string "mybucket32byteencryptionkeyssec" --enc-c "myminio/mybucket/prefix/object.obj=bXlidWNrZXQzMmJ5dGVlbmNyeXB0aW9ua2V5c3NlYwo" 重复该参数可指定多个加密密钥。 指定一个前缀的路径,以便对该路径上的所有匹配对象进行加密: --enc-c "myminio/mybucket/prefix/=bXlidWNrZXQzMmJ5dGVlbmNyeXB0aW9ua2V5c3NlYwo" 备注 MinIO 强烈建议不要在生产工作负载中使用 SSE-C 加密。 通过 --enc-kms参数使用 SSE-KMS 或通过--enc-s3参数使用 SSE-S3。
全局标记
此命令支持任何 全局标志。
示例
将 STDIN 的内容写入本地文件系统
以下命令将标准输入(STDIN)的内容写入本地文件系统上的 /tmp 文件夹。
mc pipe /tmp/hello-world.go
将 ISO 映像复制到 S3 存储
以下命令首先流式传输Debian ISO映像的内容,然后使用该流在S3路径上创建对象。
cat debian-live-11.5.0-amd64-mate.iso | mc pipe s3/opensource-isos/debian-11-5.iso
将 MySQL 数据库转储流式传输到 S3
以下命令首先流式传输 MySQL 数据库,并使用该流通过 mc pipeline 在 S3 上创建备份:
mysqldump -u root -p ******* accountsdb | mc pipe s3/sql-backups/backups/accountsdb-sep-28-2022.sql
将文件写入低冗余存储类
以下命令将标准输入(STDIN)流式传输的数据用于在S3上创建一个对象,并将其存储在减少冗余存储类中。
 mc pipe --storage-class REDUCED_REDUNDANCY s3/personalbuck/meeting-notes.txt
使用元数据将文件复制到 MinIO 部署
以下命令将MP3文件上传到具有别名 myminio 和 music 桶的 MinIO 部署。
该对象写入时带有某些元数据,例如 Cache-Control 和 Artist 。
cat music.mp3 | mc pipe --attr "Cache-Control=max-age=90000,min-fresh=9000;Artist=Unknown" myminio/music/guitar.mp3
为上传的对象设置标签
以下命令在别名为 myminio 的MinIO部署的 mybucket 桶中创建一个对象,并附带两个标签。
您可以为对象设置多达10个标签。
tar cvf - . | mc pipe --tags "category=prod&type=backup" myminio/mybucket/backup.tar
