mc cp
语法
mc cp
命令将对象复制到或从 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
方括号
[]
表示可选参数。共享同一行的参数是相互依赖的。
使用管道
|
运算符分隔的参数是互斥的。
将示例复制到文本编辑器中,并在终端/shell中运行命令之前根据需要进行修改。
参数
- SOURCE
- 必需
要复制的对象。
要从MinIO复制对象,请指定别名和该对象的完整路径(例如,存储桶和对象路径)。例如:
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
- 必需
mc cp
复制对象到的完整路径。要将对象复制到MinIO,请指定
alias
和该对象的完整路径(例如,存储桶和对象路径)。例如:mc cp ~/mydata/object.txt play/mybucket/object.txt
要从本地文件系统复制对象,请指定该对象的完整路径。例如:
mc cp play/mybucket/object.txt ~/mydata/object.txt
- --checksum
- 可选
版本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
- 可选
使用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参数。
- --legal-hold
- 可选
在复制的对象上启用无限期法律保留对象锁定。
指定
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校验和。
- --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。
- --version-id, vid
- 可选
指示
mc cp
仅对指定的对象版本进行操作。--version-id
要求指定的SOURCE
是支持存储桶版本控制的兼容 S3 的服务。对于 MinIO 部署,请使用mc version
启用或禁用存储桶版本控制。
全局标志
此命令支持任何全局标志。
示例
将对象复制到 S3
使用mc cp
将对象复制到兼容 S3 的主机
递归将对象复制到 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
对象名称。
需要版本控制
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
对象名称。
需要版本控制
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
对象名称。
以下示例设置了 content-type
为 application/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 命令可能按文档记录的方式工作,但任何此类使用均由您自行承担风险。