文档

mc put

mc 版本新增内容: RELEASE.2024-02-24T01-33-20Z

语法

The mc put 将对象从本地文件系统上传到目标 S3 部署上的存储桶。

mc put 提供了一个比 mc cpmc mirror 更简单的上传文件界面。 mc put 使用单向上传功能,以牺牲效率为代价换取其他命令的强大功能和复杂性。

以下命令将本地文件系统路径为 ~/images/collateral/ 的文件 logo.png 上传到别名为 minio 的 MinIO 部署上的名为 marketing 的存储桶。

mc put ~/images/collateral/logo.png minio/marketing

该命令具有以下语法

mc [GLOBALFLAGS] put                      \
                 TARGET                   \
                 [--checksum value]       \
                 [--disable-multipart]    \
                 [--enc-kms value]        \
                 [--enc-s3 value]         \
                 [--enc-c value]          \
                 [--if-not-exists]        \
                 [--parallel, -P integer] \
                 [--part-size, -s string]
  • 方括号 [] 表示可选参数。

  • 共享同一行的参数相互依赖。

  • 使用管道 | 运算符分隔的参数相互排斥。

将示例复制到文本编辑器中,并在终端/Shell 中运行命令之前根据需要修改。

参数

TARGET
必填

命令应运行的 别名 或前缀的完整路径。TARGET 必须包含一个 别名bucket 名称。

TARGET 还可能包含以下可选组件:- OBJECT 应上传到的 PREFIX- OBJECT-NAME 用来代替文件名

有效的 TARGET 可以采用以下任何形式:- ALIAS/BUCKET - ALIAS/BUCKET/PREFIX - ALIAS/BUCKET/OBJECT-NAME - ALIAS/BUCKET/PREFIX/OBJECT-NAME

--checksum
可选

RELEASE.2024-10-02T08-27-28Z 版本新增。

向上传输的对象添加校验和。

有效值为:- MD5 - CRC32 - CRC32C - SHA1 - SHA256

该标志需要服务器尾部标头,并且适用于 AWS 或 MinIO 目标。

--disable-multipart
可选

RELEASE.2024-10-02T08-27-28Z 版本新增。

禁用分块上传,并指示 mc 在单个 PUT 操作中发送对象。

--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
可选

使用服务器端 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
可选

使用服务器端 SSE-C 加密(使用客户端管理的密钥)加密或解密对象。

该参数接受格式为 KEY=VALUE 的键值对。

KEY

对象的完整路径,例如 alias/bucket/path/object.ext

您可以仅指定顶层路径,以便对该路径中的所有操作使用单个加密密钥。

VALUE

指定 32 字节的原始 Base64 编码密钥 64 字节的十六进制编码密钥,以便与 SSE-C 加密一起使用。

原始 Base64 编码拒绝 = 填充的密钥。省略填充或使用支持 RAW 格式的 Base64 编码器。

  • KEY - 对象的完整路径,例如 alias/bucket/path/object

  • VALUE - 用于加密对象的 32 字节的原始 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 加密。

--parallel, --P
可选

对于分块上传,请指定要并行上传的对象的块数。

如果未定义,则默认为 4

--part-size, -s
可选

指定分块上传的每个块要使用的尺寸。

如果未定义,则默认为 16MiB

全局标志

此命令支持任何 全局标志

示例

上传文件并指定对象名称

以下命令将文件 logo.png 从本地文件系统上传到 minio 部署上的 business 存储桶,并将其在目标上上传为 company-logo.png

mc put images/collateral/logo.png minio/business/company-logo.png

并行上传分块对象,并指定块大小

以下命令以 20MiB 为单位将文件分块,并并行上传文件的 8 个块。8 个块会依次上传,直到所有对象的块都上传完成。

mc put ~/videos/collateral/splash-page.mp4 minio/business --parallel 8 --part-size 20MiB