文件

mc cp

語法

mc cp 命令會將物件複製到 MinIO 部署或從 MinIO 部署複製物件,其中來源可以是 MinIO 本機檔案系統。

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

注意

mc cp 僅複製最新版本或指定版本的物件,而不包含任何版本資訊或修改日期。若要複製所有版本、版本資訊和相關中繼資料,請使用 mc replicate addmc 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 路徑以將多個物件複製到指定的 TARGETmc 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,請指定 別名 和該物件的完整路徑(例如儲存桶和物件路徑)。例如:

mc cp ~/mydata/object.txt play/mybucket/object.txt

若要從本機檔案系統複製物件,請指定該物件的完整路徑。例如:

mc cp play/mybucket/object.txt ~/mydata/object.txt
--attr
選用

為物件新增自訂中繼資料。將鍵值對指定為 KEY=VALUE\;。例如:--attr key1=value1\;key2=value2\;key3=value3

--checksum
選用

版本 RELEASE.2024-10-02T08-27-28Z 中的新增功能。

將檢查碼新增至已上傳的物件。

有效值為:- MD5 - CRC32 - CRC32C - SHA1 - SHA256

此旗標需要伺服器追蹤標頭,並且適用於 AWS 或 MinIO 目標。

--disable-multipart
選用

停用複製工作階段的多部分上傳。

--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 位元組的 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。

選用

在複製的物件上啟用無限期的 法律保留 物件鎖定。

指定 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 檢查碼。

--newer-than
選用

複製晚於指定天數的物件。以 #d#hh#mm#ss 格式指定字串。例如: --older-than 1d2hh3mm4ss

預設為 0 (所有物件)。

--older-than
選用

複製早於指定時間限制的物件。以 #d#hh#mm#ss 格式指定字串。例如: --older-than 1d2hh3mm4ss

預設為 0 (所有物件)。

--preserve, a
選用

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

--recursive, r
選用

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

--retention-duration
選用

要套用到複製物件的 WORM 保留模式 的持續時間。

#d#hh#mm#ss 格式指定持續時間的字串。例如: --retention-duration "1d2hh3mm4ss"

需要指定 --retention-mode

--retention-mode
選用

在複製的物件上啟用物件鎖定模式。支援下列值

  • GOVERNANCE

  • COMPLIANCE

需要指定 --retention-duration

--rewind
選用

指示 mc cp 僅對指定時間點存在的物件版本進行操作。

  • 若要回溯到過去的特定日期,請將日期指定為 ISO8601 格式的時間戳記。例如: --rewind "2020.03.24T10:00"

  • 若要回溯一段時間,請以 #d#hh#mm#ss 格式指定持續時間字串。例如: --rewind "1d2hh3mm4ss"

--rewind 要求指定的 SOURCE 是支援 儲存桶版本控制 的 S3 相容服務。對於 MinIO 部署,請使用 mc version 來啟用或停用儲存桶版本控制。

--storage-class, sc
選用

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

如需 S3 儲存類別的詳細資訊,請參閱 https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html

--tags
選用

將一或多個標籤套用到複製的物件。

KEY1=VALUE1&KEY2=VALUE2 的格式指定以 & 符號分隔的鍵值對清單,其中每一對代表要指派給物件的一個標籤。

--version-id, vid
選用

指示 mc cp 僅對指定的物件版本進行操作。

--version-id 要求指定的 SOURCE 是支援 儲存桶版本控制 的 S3 相容服務。對於 MinIO 部署,請使用 mc version 來啟用或停用儲存桶版本控制。

--zip
選用

在複製期間,從 .zip 封存解壓縮檔案。僅當來源封存檔案存在於 MinIO 部署上時才起作用。

全域標記

此命令支援任何全域標記

範例

將物件複製到 S3

使用 mc cp 將物件複製到 S3 相容主機

mc cp SOURCE ALIAS/PATH
  • 以物件的檔案系統路徑取代 SOURCE

  • 以已設定的 S3 相容主機的 別名 取代 ALIAS

  • 以 S3 相容主機上物件的路徑取代 PATH。您可以指定不同的物件名稱以在複製時「重新命名」物件。

mc cp SRCALIAS/SRCPATH TGTALIAS/TGTPATH
  • 以來源 S3 相容主機的 別名 取代 SRCALIAS

  • 以 S3 相容主機上物件的路徑取代 SRCPATH

  • 以目標 S3 相容主機的 別名 取代 TGTALIAS

  • 以目標 S3 相容主機上物件的路徑取代 TGTPATH。省略物件名稱以使用 SRCPATH 物件名稱。

將物件遞迴複製到 S3

使用 mc cp --recursive 將物件遞迴複製到 S3 相容主機

mc cp --recursive SOURCE ALIAS/PATH
  • 以包含檔案的目錄的檔案系統路徑取代 SOURCE

  • 以已設定的 S3 相容主機的 別名 取代 ALIAS

  • 以 S3 相容主機上物件的路徑取代 PATHmc cp 在目標主機上建立物件時會使用 SOURCE 檔案名稱。

mc cp --recursive SRCALIAS/SRCPATH TGTALIAS/TGTPATH
  • 以來源 S3 相容主機的 別名 取代 SRCALIAS

  • 以來源 S3 相容主機上儲存桶或儲存桶前置碼的路徑取代 SRCPATH

  • 以目標 S3 相容主機的 別名 取代 TGTALIAS

  • TGTPATH 替換為目標 S3 相容主機上物件的路徑。mc cp 在目標主機上建立物件時會使用 SRCPATH 物件名稱。

複製物件的時間點版本

使用 mc cp --rewind 來複製物件在特定時間點存在的版本。此命令僅適用於 S3 到 S3 的複製。

mc cp --rewind DURATION SRCALIAS/SRCPATH TGTALIAS/TGTPATH
  • DURATION 替換為過去的時間點,命令會複製該時間點的物件。例如,指定 30d 以複製物件在目前日期前 30 天的版本。

  • 以來源 S3 相容主機的 別名 取代 SRCALIAS

  • SRCPATH 替換為來源 S3 相容主機上物件的路徑。

  • 以目標 S3 相容主機的 別名 取代 TGTALIAS

  • TGTPATH 替換為目標 S3 相容主機上物件的路徑。省略物件名稱以使用 SRCPATH 物件名稱。

需要版本控制

mc cp 需要 儲存桶版本控制 才能使用此功能。使用 mc version 在儲存桶上啟用版本控制。

複製物件的特定版本

使用 mc cp --version-id 來複製物件的特定版本。此命令僅適用於 S3 到 S3 的複製。

mc cp --version-id VERSION SRCALIAS/SRCPATH TGTALIAS/TGTPATH
  • VERSION 替換為要複製的物件版本。

  • 以來源 S3 相容主機的 別名 取代 SRCALIAS

  • SRCPATH 替換為來源 S3 相容主機上物件的路徑。

  • 以目標 S3 相容主機的 別名 取代 TGTALIAS

  • 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 替換為所需的內容類型(也稱為 媒體類型)。

  • 以來源 S3 相容主機的 別名 取代 SRCALIAS

  • SRCPATH 替換為來源 S3 相容主機上物件的路徑。

  • 以目標 S3 相容主機的 別名 取代 TGTALIAS

  • TGTPATH 替換為目標 S3 相容主機上物件的路徑。省略物件名稱以使用 SRCPATH 物件名稱。

以下範例設定 content-typeapplication/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 命令 *可能* 會如文件所述般運作,但任何此類使用皆由您自行承擔風險。