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"]
- 方括号
[]表示可选参数。 - 同一行中的参数彼此相互依赖。
- 使用管道符
|分隔的参数彼此互斥。
请先将示例复制到文本编辑器中并按需修改,再在终端 / shell 中运行命令。
变更: RELEASE.2023-01-11T03-14-16Z
mc pipe 现已支持并发上传,以提升大流式数据的吞吐量。
参数
TARGET
mc-cmd
Required
命令应运行的 alias 或前缀完整路径。
--attr
mc-cmd
Optional
为对象添加自定义元数据。
将键值对指定为 KEY=VALUE\;,每对之间用反斜杠加分号(\;)分隔。 例如:--attr key1=value1\;key2=value2\;key3=value3。
--checksum
mc-cmd
Optional
新增: RELEASE.2024-10-02T08-27-28Z
为上传的对象添加校验和。
有效值为: - MD5 - CRC32 - CRC32C - SHA1 - SHA256
该标志依赖服务器 trailing headers,并可用于 AWS 或 MinIO 目标。
--enc-kms
mc-cmd
使用客户端管理的密钥,通过服务端 SSE-KMS 加密 对对象进行加密或解密。
该参数接受格式为 KEY=VALUE 的键值对。
| 对象的完整路径,格式为 你也可以只指定顶层路径,以便对该路径下的所有操作使用同一个加密密钥。 |
| 指定外部 KMS 上已有的数据密钥。 关于如何创建数据密钥,请参见 |
例如:
--enc-kms "myminio/mybucket/prefix/object.obj=mybucketencryptionkey"
你可以通过重复该参数来指定多个加密密钥。
也可以指定某个前缀路径,对该路径下所有匹配对象应用加密:
--enc-kms "myminio/mybucket/prefix/=mybucketencryptionkey"
--enc-s3
mc-cmd
Optional
使用 KMS 管理的密钥,通过服务端 SSE-S3 加密 对对象进行加密或解密。 指定对象的完整路径,格式为 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
mc-cmd
Optional
使用客户端管理的密钥,通过服务端 SSE-C 加密 对对象进行加密或解密。
该参数接受格式为 KEY=VALUE 的键值对。
| 对象的完整路径,格式为 你也可以只指定顶层路径,以便对该路径下的所有操作使用同一个加密密钥。 |
| 指定用于 SSE-C 加密的密钥,可以是 32 字节 RawBase64 编码密钥, 也可以是 64 字节十六进制编码密钥。 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。
--storage-class, --sc
mc-cmd
Optional
为 TARGET 处的新对象设置存储类别。
关于 S3 存储类别的更多信息,请参见 Amazon 文档。
--tags
mc-cmd
Optional
为 TARGET 应用一个或多个标签。
将键值对列表指定为 KEY1=VALUE1&KEY2=VALUE2,其中每一对表示分配给对象的一个标签。
全局标志
此命令支持 全局标志 中的任意选项。
示例
将 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 pipe 使用该数据流在 S3 上创建备份:
mysqldump -u root -p ******* accountsdb | mc pipe s3/sql-backups/backups/accountsdb-sep-28-2022.sql
将文件写入 Reduced Redundancy 存储类别
以下命令读取 STDIN 数据流,并在 S3 的 Reduced Redundancy 存储类别中创建对象。
mc pipe --storage-class REDUCED_REDUNDANCY s3/personalbuck/meeting-notes.txt
将文件连同元数据复制到 MinIO 部署
以下命令将 MP3 文件上传到 ALIAS 为 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
为上传对象设置标签
以下命令在 ALIAS 为 myminio 的 MinIO 部署中,于 mybucket 存储桶创建一个带两个标签的对象。 MinIO 支持为对象最多添加 10 个自定义标签。
tar cvf - . | mc pipe --tags "category=prod&type=backup" myminio/mybucket/backup.tar
本页部分内容改编自 MinIO 对象存储文档,© 2020–至今 MinIO, Inc.,依据 CC BY 4.0 授权,由 Silo 项目转换与维护。归属与署名
本页为非官方中文翻译。如与英文原文有出入,以英文原文为准。