文档

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 路径将多个对象移动到指定的 TARGETmc 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 mvmc mvTARGET 视为 SOURCE 处所有对象的存储桶前缀。

--attr
可选

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

--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 表示 kibibytes

  • Mi 表示 mibibytes

  • Gi 表示 gibibytes

  • Ti 表示 tebibytes

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

--limit-download 1G

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

--limit-upload
可选

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

  • B 表示字节

  • K 表示千字节

  • M 表示兆字节

  • G 表示吉字节

  • T 表示太字节

  • Ki 表示 kibibytes

  • Mi 表示 mibibytes

  • Gi 表示 gibibytes

  • Ti 表示 tebibytes

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

--limit-upload 1G

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

--newer-than
可选

删除比指定天数更新的对象(s)。指定格式为 ##d#hh#mm#ss 的字符串。例如:--newer-than 1d2hh3mm4ss

默认为 0 (所有对象)。

--older-than
可选

删除比指定时间限制更旧的对象(s)。指定格式为 #d#hh#mm#ss 的字符串。例如:--older-than 1d2hh3mm4ss

默认为 0 (所有对象)。

--preserve, a
可选

TARGET 存储桶(s)上保留 SOURCE 目录、存储桶和对象的系统属性和存储桶策略规则。

--recursive, r
可选

递归地将每个存储桶或目录 SOURCE 的内容移动到 TARGET 存储桶。

--storage-class
可选

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

有关 S3 存储类别的更多信息,请参阅 Amazon 文档中的 存储类别

全局标志

此命令支持任何 全局标志

示例

将文件从文件系统移动到与 S3 兼容的主机

mc mv [--recursive] FILEPATH ALIAS/PATH
  • FILEPATH 替换为要移动的文件的完整文件路径。

    如果指定目录的路径,请包括 --recursive 标志。

    mc mv 移除 成功移动到目标位置后的源文件。

  • ALIAS 替换为已配置的与 S3 兼容的主机的 alias

  • PATH 替换为目标存储桶。

将文件从文件系统移动到具有自定义元数据的与 S3 兼容的主机

使用 mc mv 以及 --attr 选项为文件设置自定义属性。

mc mv --attr "ATTRIBUTES" FILEPATH ALIAS/PATH
  • FILEPATH 替换为要移动的文件的完整文件路径。 mc mv 移除 成功移动到目标位置后的源文件。

  • ALIAS 替换为已配置的与 S3 兼容的主机的 alias

  • PATH 替换为目标存储桶。

  • ATTRIBUTES 替换为一个或多个逗号分隔的键值对 KEY=VALUE。 每对代表一个属性键和值。

在与 S3 兼容的服务之间移动存储桶

 mc mv --recursive SRCALIAS/SRCPATH TGTALIAS/TGTPATH
  • SRCALIAS 替换为已配置的与 S3 兼容的主机的 alias

  • SRCPATH 替换为存储桶的路径。 mc mv 移除 成功移动到目标位置后的源存储桶及其内容。

  • TGTALIAS 替换为已配置的与 S3 兼容的主机的 alias

  • TGTPATH 替换为存储桶的路径。

将文件移动到具有特定存储类别的与 S3 兼容的主机

使用 mc mv 以及 --storage-class 选项为目标与 S3 兼容的主机设置存储类别。

mc mv --storage-class CLASS FILEPATH ALIAS/PATH
  • CLASS 替换为要与文件关联的存储类别。

  • FILEPATH 替换为要移动的文件的完整文件路径。 mc mv 移除 成功移动到目标位置后的源文件。

  • ALIAS 替换为已配置的与 S3 兼容的主机的 alias

  • PATH 替换为目标存储桶。

  • ATTRIBUTES 替换为一个或多个逗号分隔的键值对 KEY=VALUE。 每对代表一个属性键和值。

    mc mv –storage-class REDUCED_REDUNDANCY myobject.txt play/mybucket

行为

移动时的对象名称

如果未指定明确的目标对象名称,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 命令可能按文档工作,但任何此类使用风险自负。