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
- 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 目标配合使用。
- --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客户端的本地设备的下载。 有效的单位包括:
B
for bytesK
for kilobytesM
for megabytesG
for gigabytesT
for terabytesKi
for kibibytesMi
for mibibytesGi
for gibibytesTi
for tebibytes
例如,如果要将下载速率限制在不超过1 GiB/s,可以使用以下命令:
--limit-download 1G
如果未指定,MinIO 将使用不限下载速率。
- --limit-upload
- :optional:
将客户端的上传速率限制在规定的KiB/s、MiB/s或GiB/s以下。 这只影响运行MinIO Client的本地设备的上传。 有效的单位包括:
B
for bytesK
for kilobytesM
for megabytesG
for gigabytesT
for terabytesKi
for kibibytesMi
for mibibytesGi
for gibibytesTi
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
(所有对象)。
- --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 命令 可能 如文档中所 述工作,但任何此类使用都是您自己的风险。