文件

mc mv

語法

mc mv 命令會將物件從來源移動到目標,例如在 MinIO 部署之間在同一個 MinIO 部署上的儲存桶之間移動。 mc mv 也支援在本地檔案系統和 MinIO 之間移動物件。

您也可以針對本機檔案系統使用 mc mv,以產生與 mv 命令列工具類似的結果。

下列命令將物件從 myminio MinIO 部署上的 mydata 儲存桶移動到 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
:必要:

要移動的物件。

若要從 MinIO 儲存桶移動物件,請指定 別名 和物件的完整路徑(例如,儲存桶和物件的路徑)。例如:

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 的儲存桶的完整路徑。請指定已設定的 S3 服務的 別名 作為 TARGET 路徑的前綴。

若要從 MinIO 移動物件,請指定 別名 和物件的完整路徑(例如,儲存桶和物件的路徑)。例如:

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 中所有物件的儲存桶前綴。

--attr
選用

為物件新增自訂中繼資料。以 KEY=VALUE\; 格式指定鍵值組。例如,--attr key1=value1\;key2=value2\;key3=value3

--disable-multipart
選用

停用多部分上傳功能。

多部分上傳會將物件分割成一組獨立的部分。每個部分會個別且依任意順序上傳。如果任何個別部分上傳失敗,MinIO 會重試該部分,而不會影響其他部分。上傳完成後,這些部分會組合以還原原始物件。

MinIO 建議對任何大於 100 MB 的物件使用多部分上傳。如需多部分上傳的詳細資訊,請參閱 Amazon S3 文件

--enc-kms

使用伺服器端 SSE-KMS 加密 和用戶端管理金鑰來加密或解密物件。

此參數接受以 KEY=VALUE 格式化的鍵值組

物件的完整路徑,格式為 alias/bucket/path/object.ext

您只能指定頂層路徑,以針對該路徑中的所有操作使用單一加密金鑰。

指定外部 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"

您可以多次指定此參數,以表示要加密的不同物件

--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 格式化的鍵值組

物件的完整路徑,格式為 alias/bucket/path/object.ext

您只能指定頂層路徑,以針對該路徑中的所有操作使用單一加密金鑰。

指定 32 位元組的 RawBase64 編碼金鑰 64 位元組的十六進位編碼金鑰,以搭配 SSE-C 加密使用。

Raw 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。

--limit-download
選用

將用戶端下載速率限制為不超過指定的速率(單位為 KiB/s、MiB/s 或 GiB/s)。這只會影響下載到執行 MinIO Client 的本機裝置。有效的單位包括:

  • 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 Client 的本機裝置上傳。有效的單位包括:

  • B 代表位元組

  • K 代表千位元組

  • M 代表百萬位元組

  • G 代表十億位元組

  • T 代表兆位元組

  • Ki 代表千位元組二進制

  • Mi 代表百萬位元組二進制

  • Gi 代表十億位元組二進制

  • Ti 代表兆位元組二進制

例如,若要將上傳速率限制為不超過 1 GiB/s,請使用下列命令:

--limit-upload 1G

如果未指定,MinIO 會使用無限的上傳速率。

--newer-than
選用

移除比指定天數新的物件。以 ##d#hh#mm#ss 格式指定字串。例如:--newer-than 1d2hh3mm4ss

預設為 0 (所有物件)。

--older-than
選用

移除比指定時間限制舊的物件。以 #d#hh#mm#ss 格式指定字串。例如:--older-than 1d2hh3mm4ss

預設為 0 (所有物件)。

--preserve, a
選用

保留 SOURCE 目錄、儲存桶和物件在 TARGET 儲存桶上的檔案系統屬性和儲存桶原則規則。

--recursive, r
選用

遞迴地將每個儲存桶或目錄 SOURCE 的內容移動到 TARGET 儲存桶。

--storage-class
選用

TARGET 上設定新物件的儲存類別。

請參閱 Amazon 文件中的 儲存類別,以取得更多關於 S3 儲存類別的資訊。

全域旗標

此命令支援任何 全域旗標

範例

將檔案從檔案系統移動到 S3 相容主機

mc mv [--recursive] FILEPATH ALIAS/PATH
  • FILEPATH 替換為要移動檔案的完整檔案路徑。

    如果指定目錄的路徑,請包含 --recursive 旗標。

    mc mv 在成功移動到目的地後,會從來源移除檔案。

  • ALIAS 替換為已設定的 S3 相容主機的 別名

  • PATH 替換為目的地儲存桶。

將檔案從檔案系統移動到具有自訂中繼資料的 S3 相容主機

使用 mc mv--attr 選項來設定檔案的自訂屬性。

mc mv --attr "ATTRIBUTES" FILEPATH ALIAS/PATH
  • FILEPATH 替換為要移動檔案的完整檔案路徑。mc mv 在成功移動到目的地後,會從來源移除檔案。

  • ALIAS 替換為已設定的 S3 相容主機的 別名

  • PATH 替換為目的地儲存桶。

  • ATTRIBUTES 替換為一個或多個以逗號分隔的鍵值對 KEY=VALUE。每個配對代表一個屬性鍵和值。

在 S3 相容服務之間移動儲存桶

 mc mv --recursive SRCALIAS/SRCPATH TGTALIAS/TGTPATH
  • SRCALIAS 替換為已設定的 S3 相容主機的 別名

  • SRCPATH 替換為儲存桶的路徑。mc mv 在成功移動到目的地後,會從來源移除儲存桶及其內容。

  • TGTALIAS 替換為已設定的 S3 相容主機的 別名

  • TGTPATH 替換為儲存桶的路徑。

將檔案移動到具有特定儲存類別的 S3 相容主機

使用 mc mv--storage-class 選項,在目的地 S3 相容主機上設定儲存類別。

mc mv --storage-class CLASS FILEPATH ALIAS/PATH
  • CLASS 替換為要與檔案關聯的儲存類別。

  • FILEPATH 替換為要移動檔案的完整檔案路徑。mc mv 在成功移動到目的地後,會從來源移除檔案。

  • ALIAS 替換為已設定的 S3 相容主機的 別名

  • 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 mvmc 會應用相同的行為,透過遞迴方式修剪直到根目錄的空目錄路徑。然而,mc 移除 API 無法區分明確建立的目錄路徑和隱式建立的目錄路徑。如果 mc mv 刪除檔案系統路徑中的最後一個物件,mc 會遞迴刪除該路徑內的所有空目錄,直到根目錄,作為移除操作的一部分。

S3 相容性

mc 命令列工具是為了與 AWS S3 API 相容而建置,並已透過 MinIO 和 AWS S3 測試其預期的功能和行為。

MinIO 不保證其他 S3 相容服務的運作,因為它們的 S3 API 實作是未知的,因此不支援。雖然 mc 命令可能會如文件所述運作,但任何此類使用風險自負。