中文文档

mc cp

语法

mc cp 命令用于将对象从一个MinIO部署复制到另一个MinIO 部署, 或者 从MinIO复制到本地文件系统。

你还可以使用 mc cp 命令针对本地文件系统, 以产生类似于 cp 命令行工具的结果。

备注

mc cp 命令仅复制对象的最后一个版本或指定的版本,而不复制任何版本信息或修改日期。 要复制所有版本、版本信息和相关元数据,请使用 mc replicate addmc admin replicate 命令。

以下命令将本地文件系统目录中的文件复制到 myminio MinIO部署的 mydata 桶中:

mc cp --recursive ~/mydata/ myminio/mydata/

mc cp 命令具有以下语法:

mc [GLOBALFLAGS] cp                                                        \
                 [--attr "string"]                                         \
                 [--disable-multipart]                                     \
                 [--enc-kms "string"]                                      \
                 [--enc-s3 "string"]                                       \
                 [--enc-c "string"]                                        \
                 [--legal-hold "on"]                                       \
                 [--limit-download string]                                 \
                 [--limit-upload string]                                   \
                 [--md5]                                                   \
                 [--newer-than "string"]                                   \
                 [--older-than "string"]                                   \
                 [--preserve]                                              \
                 [--recursive]                                             \
                 [--retention-mode "string" --retention-duration "string"] \
                 [--rewind "string"]                                       \
                 [--storage-class "string"]                                \
                 [--tags "string"]                                         \
                 [--version-id "string"]                                   \
                 [--zip]                                                   \
                 SOURCE [SOURCE ...]                                       \
                 TARGET
  • 方括号 [] 表示可选参数。

  • 参数在同一行表示它们是相互依赖的。

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

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

参数

SOURCE
Required

要复制的一个或多个对象。

要从MinIO复制对象,请指定 alias 和该对象的完整路径(例如,桶和对象路径)。 例如:

mc cp play/mybucket/object.txt ~/mydata/object.txt

指定多个 SOURCE 路径以将多个对象复制到指定的 TARGETmc cp最后 一个指定的别名或文件系统路径视为 TARGET 。 例如:

mc cp ~/data/object.txt myminio/mydata/object.txt play/mydata/

要从本地文件系统复制一个对象,请指定该对象的完整路径。 例如:

mc cp ~/mydata/object.txt play/mybucket/object.txt

如果您向 SOURCE 指定一个目录或桶,您还必须指定 --recursive 以递归复制该目录或桶的内容。 如果您省略了 --recursive 参数, cp 只复制指定目录或桶顶层的对象。

TARGET
Required

mc cp 复制对象的完整路径。

要将对象复制到 MinIO,请指定 alias 和该对象的完整路径 (例如,存储桶和对象路径)。 例如:

mc cp ~/mydata/object.txt play/mybucket/object.txt

如果您想从本地文件系统复制一个对象, 您需要指定该对象的完整路径。 例如:

mc cp play/mybucket/object.txt ~/mydata/object.txt
--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 目标配合使用。

--disable-multipart
Optional

禁用复制会话的分段上传。

--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。

Optional

该命令启用了对复制对象的无限期 合法保留 对象锁定。

指定 on

--limit-download
Optional

将客户端的下载速率限制在指定的KiB/s、MiB/s或GiB/s之内。 只影响运行MinIO客户端的本地设备的下载。 有效的单位包括:

  • B for bytes

  • K for kilobytes

  • M for megabytes

  • G for gigabytes

  • T for terabytes

  • Ki for kibibytes

  • Mi for mibibytes

  • Gi for gibibytes

  • Ti for tebibytes

例如,如果要将下载速率限制在不超过1 GiB/s,可以使用以下命令:

--limit-download 1G

如果未指定,MinIO 将使用不限下载速率。

--limit-upload
:optional:

将客户端的上传速率限制在规定的KiB/s、MiB/s或GiB/s以下。 这只影响运行MinIO Client的本地设备的上传。 有效的单位包括:

  • B for bytes

  • K for kilobytes

  • M for megabytes

  • G for gigabytes

  • T for terabytes

  • Ki for kibibytes

  • Mi for mibibytes

  • Gi for gibibytes

  • Ti for tebibytes

例如,要将上传速率限制为不超过1 GiB/s,可以使用以下方法:

--limit-upload 1G

如果未指定,MinIO将使用无限上传速率。

--md5
Optional

在 RELEASE.2024-10-02T08-27-28Z 版本发生变更: :mc-command:`~mc cp --checksum` 标志替换。

强制所有上传计算MD5校验和。

--newer-than
Optional

复制指定天数内更新的对象。 以 #d#hh#mm#ss 格式指定字符串。 例如: --older-than 1d2hh3mm4ss

默认为 0 (所有对象)。

--older-than
Optional

复制指定时间限制之前的对象。 以 #d#hh#mm#ss 格式指定字符串。 例如: --older-than 1d2hh3mm4ss

默认为 0 (所有对象)。

--preserve, a
Optional

保留 SOURCE 目录、桶和对象在 TARGET 桶上的文件系统属性和桶策略规则。

--recursive, r
Optional

递归复制每个桶或目录 SOURCE 的内容到 TARGET 桶。

--retention-duration
Optional

应用于复制对象(如果有的话)的 WORM 保留模式 的持续时间。

将持续时间指定为 #d#hh#mm#ss 格式的字符串。 例如: --retention-duration "1d2hh3mm4ss

需要指定 --retention-mode

--retention-mode
Optional

在复制的对象上启用 对象锁定模式。 支持以下值:

  • GOVERNANCE

  • COMPLIANCE

需要指定 --retention-duration.

--rewind
Optional

指令 mc cp 只对在指定时间点存在的 对象版本进行操作。

  • 要回退到过去的特定日期,请将日期指定 为 ISO8601 格式的时间戳。例如: --rewind 2020.03.24T10:00

  • 要回退一段时间,请将持续时间指定为字符串格式, 例如 #d#hh#mm#ss 。例如: --rewind 1d2hh3mm4ss

--rewind 命令要求指定的 SOURCE 是一个支持 桶版本控制 的 S3 兼容服务。 对于 MinIO 部署,使用 mc version 命令来启用或禁用桶版本控制。

--storage-class, sc
Optional

TARGET 上为新对象设置存储类别。

更多信息关于S3存储类别, 请参见 https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html

--tags
Optional

将一个或多个标签应用于复制的对象。

指定由与号分隔的键值对列表,例如 KEY1=VALUE1&KEY2=VALUE2 ,每个对代表 一个要分配给对象的标签。

--version-id, vid
Optional

指令 mc cp 只对指定的对象版本进行操作。

需要指定的 SOURCE 是一个支持 桶版本控制 的 S3 兼容服务。 对于 MinIO 部署,使用 mc version 命令来启用或禁用桶版本控制。

--zip
Optional

在复制过程中,从 .zip 归档中提取文件。 仅在源归档文件存在于MinIO部署上时才有效。

全局标记

此命令支持任何 全局标志

示例

将对象复制到 S3

使用 mc cp 将对象复制到S3兼容的主机:

mc cp SOURCE ALIAS/PATH
  • SOURCE 替换为对象在文件系统中的 路径。

  • ALIAS 替换为配置好 的S3兼容主机的 alias

  • PATH 替换为在S3兼容主机上 对象的路径。您可以指定一个不同的对象名称来在 复制时 rename 对象。

mc cp SRCALIAS/SRCPATH TGTALIAS/TGTPATH
  • SRCALIAS 替换为 源S3兼容主机的 alias

  • SRCPATH 替换为在S3兼容 主机上对象的路径。

  • TGTALIAS 替换为目标 S3兼容主机的 alias

  • TGTPATH 替换为在 目标S3兼容主机上对象的路径。如果省略对象名称, 将使用 SRCPATH 中的对象名称。

递归地将对象复制到 S3

使用 mc cp --recursive 命令来递归地将对象 复制到S3兼容主机上。

mc cp --recursive SOURCE ALIAS/PATH
  • SOURCE 替换为包含文件 的文件系统路径。

  • ALIAS 替换为配置好 的S3兼容主机的 alias

  • PATH 替换为在S3兼容主机上的对象 路径。mc cp 在目标主机上创建对象时会使用 SOURCE 中的文件名。

mc cp --recursive SRCALIAS/SRCPATH TGTALIAS/TGTPATH
  • SRCALIAS 替换为 源S3兼容主机的 alias

  • SRCPATH 替换为在 源S3兼容主机上存储桶或存储桶前缀的路径。

  • TGTALIAS 替换为目标 S3兼容主机的 alias

  • TGTPATH 替换为在目标S3兼容 主机上对象的路径。mc cp 在目标主机上创建对象时 会使用 SRCPATH 中的对象 名称。

复制对象的时间点版本

使用 mc cp --rewind 命令来复制对象在 特定时间点的版本。这个命令只适用于S3到S3的复制。

mc cp --rewind DURATION SRCALIAS/SRCPATH TGTALIAS/TGTPATH
  • DURATION 替换为命令复制 对象的过去时间点。例如,指定 30d 以复制 对象在当前日期前30天的 版本。

  • SRCALIAS 替换为 源S3兼容主机的 alias

  • SRCPATH 替换为 源S3兼容主机上对象的路径。

  • TGTALIAS 替换为 目标S3兼容主机的 alias

  • TGTPATH 替换为目标S3兼容 主机上对象的路径。如果省略对象名称, 将使用 SRCPATH 中的对象名称。

Requires Versioning

mc cp 需要使用 桶版本控制 来使用此功能。 使用 mc version 命令来为一个桶启用版本控制。

复制对象的特定版本

使用 mc cp --version-id 来复制对象的特定版本。 此命令仅适用于S3到S3的复制。

mc cp --version-id VERSION SRCALIAS/SRCPATH TGTALIAS/TGTPATH
  • VERSION 替换为要复制的 对象的版本。

  • SRCALIAS 替换为 源S3兼容主机的 alias

  • SRCPATH 替换为 源S3兼容主机上对象的路径。

  • TGTALIAS 替换为 目标S3兼容主机的 alias

  • TGTPATH 替换为目标S3兼容 主机上对象的路径。如果省略对象名称, 将使用 SRCPATH 中的对象名称。

Requires Versioning

mc cp 需要使用 桶版本控制 来使用此功能。 使用 mc version 命令来为一个桶启用版本控制。

添加一个 content-type 值。

使用 mc cp --attr 添加一个 content-type 值。 此命令仅适用于S3到S3的复制。

mc cp --attr="content-type=CONTENT-TYPE" SRCALIAS/SRCPATH TGTALIAS/TGTPATH
  • CONTENT-TYPE 替换为所需的内容类型(也称为 媒体类型)。

  • SRCALIAS 替换为源S3兼容主机的 alias

  • SRCPATH 替换为源S3兼容主机上对象的路径。

  • TGTALIAS 替换为目标S3兼容主机的 alias

  • TGTPATH 替换为目标S3兼容主机上对象的路径。 省略对象名称以使用 SRCPATH 中的对象名称。

以下示例设置 application/jsoncontent-type :

 mc cp data.ndjson --attr="content-type=application/json" myminio/mybucket

行为

mc cp 在执行到对象存储的复制操作时, 会使用 MD5SUM 校验和来验证数据完整性。

S3兼容性

mc 命令行工具是为了与 AWS S3 API 兼容而构建的,并且已经过测试, 以确保在与 MinIO 和 AWS S3 配合使用时,功能和行为符合预期。

MinIO 不对其他 S3 兼容服务提供任何保证,因为它们的 S3 API 实现是 未知的,因此不受支持。尽管 mc 命令 可能 如文档中所 述工作,但任何此类使用都是您自己的风险。

Join Slack 商业支持购买咨询