mc mv
语法
命令 mc mv
将对象从源移动到目标,例如在 MinIO 部署之间或在同一 MinIO 部署上的存储桶之间。 mc mv
也支持在本地文件系统和 MinIO 之间移动对象。
您也可以对本地文件系统使用 mc mv
来产生类似于 mv
命令行工具的结果。
以下命令将对象从 mydata
存储桶移动到 myminio
MinIO 部署上的 archive
存储桶。
mc mv --recursive myminio/mydata myminio/archive
该命令具有以下语法。
mc [GLOBALFLAGS] mv \
[--attr "string"] \
[--disable-multipart] \
[--enc-kms "string"] \
[--enc-s3 "string"] \
[--enc-c "string"] \
[--limit-download string] \
[--limit-upload string] \
[--newer-than "string"] \
[--older-than "string"] \
[--preserve] \
[--recursive] \
[--storage-class "string"] \
SOURCE [SOURCE...] \
TARGET
方括号
[]
表示可选参数。共享一行的参数是相互依赖的。
使用管道
|
运算符分隔的参数是互斥的。
将示例复制到文本编辑器中,并在终端/shell 中运行该命令之前根据需要进行修改。
参数
- SOURCE
- :required:
要移动的对象或多个对象。
要从 MinIO 存储桶移动对象,请指定 别名 和对象(s)的完整路径(例如,存储桶和对象路径)。例如
mc mv play/mybucket/object.txt play/myotherbucket/object.txt
要从本地文件系统移动对象,请指定该对象的完整路径。例如
mc mv ~/mydata/object.txt play/mybucket/object.txt
指定多个
SOURCE
路径将多个对象移动到指定的TARGET
。mc rm
将最后指定的别名或文件系统路径视为TARGET
。例如mc mv ~/mydata/object.txt play/mydata/otherobject.txt myminio/mydata
如果您将目录或存储桶指定为
SOURCE
,您还必须指定--recursive
以递归地移动该目录的内容。如果您省略--recursive
参数,mv
仅移动指定目录或存储桶顶层中的对象。
- TARGET
- 必需
要将命令将指定
SOURCE
处的对象(s)移动到的存储桶的完整路径。将配置的 S3 服务的 别名 指定为TARGET
路径的前缀。要从 MinIO 移动对象,请指定 别名 和对象(s)的完整路径(例如,存储桶和对象路径)。例如
mc mv play/mybucket/object.txt play/myotherbucket/object.txt
要从本地文件系统移动对象,请指定该对象的完整路径。例如
mc mv ~/mydata/object.txt play/mybucket/object.txt
TARGET
对象名称可以与SOURCE
不同,以便在移动操作的一部分中“重命名”该对象。如果使用
--recursive
选项运行mc mv
,mc mv
将TARGET
视为SOURCE
处所有对象的存储桶前缀。
- --disable-multipart
- 可选
禁用多部分上传功能。
多部分上传将对象分成一组单独的部分。每个部分单独上传,并且可以按任何顺序上传。如果任何单个部分上传失败,MinIO 会重试该部分,而不会影响其他部分。上传完成后,这些部分会合并以恢复原始对象。
MinIO 建议对任何大于 100 MB 的对象使用多部分上传。有关多部分上传的更多信息,请参阅 Amazon S3 文档
- --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
- 可选
使用服务器端 SSE-S3 加密 (使用 KMS 管理的密钥)对对象进行加密或解密。指定对象的完整路径,如
alias/bucket/prefix/object
。例如
--enc-s3 "myminio/mybucket/prefix/object.obj"
您可以多次指定该参数以表示要加密的不同对象(s)。
--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 字节的 RAW Base64 编码密钥或 64 字节的十六进制编码密钥,用于 SSE-C 加密。
RAW Base64 编码拒绝
=
填充密钥。省略填充或使用支持 RAW 格式的 Base64 编码器。KEY
- 对象的完整路径,如alias/bucket/path/object
。VALUE
- 用于加密对象(s)的 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 参数。
- --limit-download
- 可选
将客户机端下载速率限制为不超过指定的速率,单位为 KiB/s、MiB/s 或 GiB/s。这仅影响运行 MinIO 客户端的本地设备的下载。有效的单位包括
B
表示字节K
表示千字节M
表示兆字节G
表示吉字节T
表示太字节Ki
表示 kibibytesMi
表示 mibibytesGi
表示 gibibytesTi
表示 tebibytes
例如,要将下载速率限制为不超过 1 GiB/s,请使用以下命令
--limit-download 1G
如果未指定,MinIO 将使用无限下载速率。
全局标志
此命令支持任何 全局标志。
示例
将文件从文件系统移动到与 S3 兼容的主机
mc mv [--recursive] FILEPATH ALIAS/PATH
将文件从文件系统移动到具有自定义元数据的与 S3 兼容的主机
使用 mc mv
以及 --attr
选项为文件设置自定义属性。
mc mv --attr "ATTRIBUTES" FILEPATH ALIAS/PATH
在与 S3 兼容的服务之间移动存储桶
mc mv --recursive SRCALIAS/SRCPATH TGTALIAS/TGTPATH
将文件移动到具有特定存储类别的与 S3 兼容的主机
使用 mc mv
以及 --storage-class
选项为目标与 S3 兼容的主机设置存储类别。
mc mv --storage-class CLASS FILEPATH ALIAS/PATH
行为
移动时的对象名称
如果未指定明确的目标对象名称,MinIO 将使用 SOURCE
对象名称将对象移动到 TARGET
。
您可以使用相同的对象路径为 TARGET
指定不同的对象名称以“重命名”对象。 例如
mc mv play/mybucket/object.txt play/mybucket/myobject.txt
对于递归移动操作(mc mv --recursive
),MinIO 将 TARGET
路径视为 SOURCE
上对象的 前缀。
校验和验证
mc mv
使用 MD5SUM 校验和验证所有移动到对象存储的操作。
MinIO 在对象删除时会修剪空前缀
mc mv
依赖于 mc
删除 API 来删除对象。 作为删除存储桶前缀中最后一个对象的 一部分, mc
也会递归地删除前缀的每个空部分,直到存储桶根目录。 mc
仅将递归删除应用于 隐式 创建的前缀,即前缀不是使用显式目录创建命令(如 mc mb
)创建的。
例如,考虑一个名为 photos
的存储桶,它包含以下对象前缀
photos/2021/january/myphoto.jpg
photos/2021/february/myotherphoto.jpg
photos/NYE21/NewYears.jpg
photos/NYE21
是 唯一 使用 mc mb
显式创建的前缀。 所有其他前缀都是 隐式 创建的,作为写入位于该前缀的对象的一部分。
如果一个 mc
命令删除了 myphoto.jpg
,删除 API 会自动修剪空的 /january
前缀。 如果随后的 mc
命令删除了 myotherphoto.jpg
,删除 API 会自动修剪 /february
前缀 以及 现在为空的 /2021
前缀。 如果一个 mc
命令删除了 NewYears.jpg
, /NYE21
前缀将保留在 原地,因为它 显式 创建了。
如果使用 mc mv
执行文件系统上的操作,mc
会应用相同的行为,递归地修剪空目录路径,直到根目录。 但是,mc
删除 API 无法区分显式创建的目录路径和隐式创建的目录路径。 如果 mc mv
删除了文件系统路径中的最后一个对象,mc
会递归地删除该路径中所有空目录,直到根目录,作为删除操作的一部分。
S3 兼容性
mc 命令行工具旨在与 AWS S3 API 兼容,并已在 MinIO 和 AWS S3 上测试,以确保预期功能和行为。
对于其他与 S3 兼容的服务,MinIO 不提供任何保证,因为它们的 S3 API 实现未知,因此不受支持。虽然 mc 命令可能按文档工作,但任何此类使用风险自负。