mc cp
语法
mc cp 命令用于将对象从一个MinIO部署复制到另一个MinIO
部署, 或者 从MinIO复制到本地文件系统。
你还可以使用 mc cp 命令针对本地文件系统,
以产生类似于 cp 命令行工具的结果。
备注
mc cp 命令仅复制对象的最后一个版本或指定的版本,而不复制任何版本信息或修改日期。
要复制所有版本、版本信息和相关元数据,请使用 mc replicate add 或 mc 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路径以将多个对象复制到指定的TARGET。mc 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
- Requiredmc 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 目标配合使用。 
- --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。
- --legal-hold
- Optional该命令启用了对复制对象的无限期 合法保留 对象锁定。 指定 on。
- --limit-download
- Optional将客户端的下载速率限制在指定的KiB/s、MiB/s或GiB/s之内。 只影响运行MinIO客户端的本地设备的下载。 有效的单位包括: - Bfor bytes
- Kfor kilobytes
- Mfor megabytes
- Gfor gigabytes
- Tfor terabytes
- Kifor kibibytes
- Mifor mibibytes
- Gifor gibibytes
- Tifor tebibytes
 例如,如果要将下载速率限制在不超过1 GiB/s,可以使用以下命令: --limit-download 1G 如果未指定,MinIO 将使用不限下载速率。 
- --limit-upload
- :optional:
- 将客户端的上传速率限制在规定的KiB/s、MiB/s或GiB/s以下。 这只影响运行MinIO Client的本地设备的上传。 有效的单位包括: - Bfor bytes
- Kfor kilobytes
- Mfor megabytes
- Gfor gigabytes
- Tfor terabytes
- Kifor kibibytes
- Mifor mibibytes
- Gifor gibibytes
- Tifor 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(所有对象)。
- --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 。 
- --version-id, vid
- Optional指令 mc cp只对指定的对象版本进行操作。需要指定的 SOURCE是一个支持 桶版本控制 的 S3 兼容服务。 对于 MinIO 部署,使用mc version命令来启用或禁用桶版本控制。
全局标记
此命令支持任何 全局标志。
示例
将对象复制到 S3
使用 mc cp 将对象复制到S3兼容的主机:
mc cp SOURCE ALIAS/PATH
递归地将对象复制到 S3
使用 mc cp --recursive 命令来递归地将对象
复制到S3兼容主机上。
mc cp --recursive SOURCE ALIAS/PATH
复制对象的时间点版本
使用 mc cp --rewind 命令来复制对象在
特定时间点的版本。这个命令只适用于S3到S3的复制。
mc cp --rewind DURATION SRCALIAS/SRCPATH TGTALIAS/TGTPATH
- 将 - DURATION替换为命令复制 对象的过去时间点。例如,指定- 30d以复制 对象在当前日期前30天的 版本。
- 将 - SRCPATH替换为 源S3兼容主机上对象的路径。
- 将 - 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替换为要复制的 对象的版本。
- 将 - SRCPATH替换为 源S3兼容主机上对象的路径。
- 将 - 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替换为所需的内容类型(也称为 媒体类型)。
- 将 - SRCPATH替换为源S3兼容主机上对象的路径。
- 将 - TGTPATH替换为目标S3兼容主机上对象的路径。 省略对象名称以使用- SRCPATH中的对象名称。
以下示例设置 application/json 的 content-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 命令 可能 如文档中所 述工作,但任何此类使用都是您自己的风险。
