文档

mc cp

语法

mc cp 命令将对象复制到或从 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
  • 方括号[]表示可选参数。

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

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

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

参数

SOURCE
必需

要复制的对象。

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

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
必需

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

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

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

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

mc cp play/mybucket/object.txt ~/mydata/object.txt
--attr
可选

为对象添加自定义元数据。将键值对指定为KEY=VALUE\;。例如,--attr key1=value1\;key2=value2\;key3=value3

--checksum
可选

版本RELEASE.2024-10-02T08-27-28Z中的新增功能。

为上传的对象添加校验和。

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

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

--disable-multipart
可选

禁用复制会话的多部分上传。

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

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

使用客户端管理的密钥和服务器端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 - 用于加密对象(s)的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参数。

可选

在复制的对象上启用无限期法律保留对象锁定。

指定on

--limit-download
可选

将客户端下载速率限制为不超过指定的KiB/s、MiB/s或GiB/s速率。这仅影响运行MinIO客户端的本地设备的下载。有效单位包括

  • B表示字节

  • K表示千字节

  • M表示兆字节

  • G表示千兆字节

  • T表示太字节

  • Ki表示千比字节

  • Mi表示兆比字节

  • Gi表示千兆比字节

  • Ti表示太比字节

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

--limit-download 1G

如果未指定,则MinIO使用无限下载速率。

--limit-upload
可选

将客户端上传速率限制为不超过指定的KiB/s、MiB/s或GiB/s速率。这仅影响运行MinIO客户端的本地设备的上传。有效单位包括

  • B表示字节

  • K表示千字节

  • M表示兆字节

  • G表示千兆字节

  • T表示太字节

  • Ki表示千比字节

  • Mi表示兆比字节

  • Gi表示千兆比字节

  • Ti表示太比字节

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

--limit-upload 1G

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

--md5
可选

版本RELEASE.2024-10-02T08-27-28Z中的更改: 已替换为--checksum标志。

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

--newer-than
可选

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

默认为0(所有对象)。

--older-than
可选

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

默认为0(所有对象)。

--preserve, a
可选

保留SOURCE目录、存储桶和对象的文件系统属性和存储桶策略规则,并将它们应用于TARGET存储桶(s)。

--recursive, r
可选

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

--retention-duration
可选

要应用于复制对象(s)的WORM 保留模式的持续时间。

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

需要指定--retention-mode

--retention-mode
可选

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

  • GOVERNANCE

  • COMPLIANCE

需要指定--retention-duration

--rewind
可选

指示mc cp仅对在指定时间点存在的对象版本(s)进行操作。

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

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

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

--storage-class, sc
可选

设置TARGET上新对象(s)的存储类别。

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

--tags
可选

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

将以 KEY1=VALUE1&KEY2=VALUE2 格式的键值对的按 & 分隔的列表指定,其中每对表示要分配给对象的标签。

--version-id, vid
可选

指示mc cp仅对指定的对象版本进行操作。

--version-id 要求指定的SOURCE 是支持存储桶版本控制的兼容 S3 的服务。对于 MinIO 部署,请使用mc version启用或禁用存储桶版本控制。

--zip
可选

在复制期间,从.zip 存档中提取文件。仅当源存档文件存在于 MinIO 部署中时才起作用。

全局标志

此命令支持任何全局标志

示例

将对象复制到 S3

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

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

  • ALIAS替换为已配置的兼容 S3 的主机的别名

  • PATH替换为兼容 S3 的主机上对象的路径。您可以指定不同的对象名称以在复制时“重命名”对象。

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

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

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

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

递归将对象复制到 S3

使用mc cp --recursive递归地将对象复制到兼容 S3 的主机

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

  • ALIAS替换为已配置的兼容 S3 的主机的别名

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

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

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

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

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

复制对象的时间点版本

使用mc cp --rewind复制对象在特定时间点存在时的状态。此命令仅适用于 S3 到 S3 的复制。

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

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

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

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

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

需要版本控制

mc cp 要求存储桶版本控制才能使用此功能。使用mc version在存储桶上启用版本控制。

复制对象的特定版本

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

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

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

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

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

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

需要版本控制

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 的主机的别名

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

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

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

以下示例设置了 content-typeapplication/json

 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 命令可能按文档记录的方式工作,但任何此类使用均由您自行承担风险。