文件

mc mirror

語法

mc mirror 命令會將內容同步到 MinIO 部署,類似於 rsync 公用程式。mc mirror 支援檔案系統、MinIO 部署和其他與 S3 相容的主機作為同步來源。

注意

mc mirror 僅同步目前物件,不包含任何版本資訊或元數據。若要同步物件的版本歷史記錄和元數據,請考慮使用 mc replicate 進行儲存桶複製,或使用 mc admin replicate 進行站點複製

以下命令將本機檔案系統目錄的內容同步到 myminio MinIO 部署上的 mydata 儲存桶。

mc mirror --watch ~/mydata myminio/mydata

該命令會「監看」本機檔案系統中新增或移除的檔案,並將這些操作同步到 MinIO,直到明確終止為止。

mc mirror --watch 會將本機檔案系統上變更的檔案更新到 MinIO(請參閱 --overwrite)。--watch 不會從 MinIO 中移除本機檔案系統上不存在的其他檔案(請參閱 --remove)。

此命令的語法如下

mc [GLOBALFLAGS] mirror                            \
                 [--active-active]                 \
                 [--attr "string"]                 \
                 [--checksum "value"]              \
                 [--disable-multipart]             \
                 [--dry-run]                       \
                 [--enc-kms "string"]              \
                 [--enc-s3 "string"]               \
                 [--enc-c "string"]                \
                 [--exclude "string"]              \
                 [--exclude-bucket "string"]       \
                 [--exclude-storageclass "string"] \
                 [--limit-download string]         \
                 [--limit-upload string]           \
                 [--md5]                           \
                 [--monitoring-address "string"]   \
                 [--newer-than "string"]           \
                 [--older-than "string"]           \
                 [--overwrite]                     \
                 [--preserve]                      \
                 [--region "string"]               \
                 [--remove]                        \
                 [--retry]                         \
                 [--skip-errors]                   \
                 [--storage-class "string"]        \
                 [--summary]                       \
                 [--watch]                         \
                 SOURCE                            \
                 TARGET
  • 方括號 [] 表示可選參數。

  • 在同一行中共享的參數是相互依賴的。

  • 使用管道符號 | 分隔的參數是互斥的。

將範例複製到文字編輯器中,並在終端機/Shell 中執行命令之前視需要修改。

參數

SOURCE
必要

要同步到 TARGET S3 主機的檔案或物件。

對於 S3 相容主機上的物件,請將物件路徑指定為 ALIAS/PATH,其中

  • ALIAS 是已設定的 S3 相容主機的 別名以及

  • PATH 是儲存桶或物件的路徑。如果指定儲存桶,mc mirror 會同步儲存桶中的所有物件。

mc mirror [FLAGS] play/mybucket/ myminio/mybucket

對於檔案系統上的檔案,請指定檔案或目錄的完整檔案系統路徑

mc mirror [FLAGS] ~/data/ myminio/mybucket

如果指定目錄,mc mirror 會同步目錄中的所有檔案。

TARGET
必要

儲存桶的完整路徑,mc mirror 會將 SOURCE 物件同步到該儲存桶。請將 TARGET 指定為 ALIAS/PATH,其中

  • ALIAS 是已設定的 S3 相容主機的 別名以及

  • PATH 是儲存桶的路徑。

mc mirror SOURCE play/mybucket

mc mirror 在同步到 TARGET 儲存桶時,會使用 SOURCE 的物件或檔案名稱。

--active-active
可選

在兩個站點之間建立主動-主動鏡像活動。必須在每個站點重複該命令。

例如

在站點 A 上,要從 A 鏡像到 B

mc mirror --active-active siteA siteB

在站點 B 上,要從 B 鏡像到 A

mc mirror --active-active siteB siteA
--attr
可選

為鏡像的物件新增自訂元數據。將鍵值對指定為 KEY=VALUE\;。例如,--attr key1=value1\;key2=value2\;key3=value3

--checksum
可選

2024-10-02T08-27-28Z 版本新增功能。

將校驗和新增到上傳的物件。

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

此旗標需要伺服器尾部標頭,並適用於 AWS 或 MinIO 目標。

--disable-multipart
可選

停用同步工作階段的多部分上傳。

--dry-run
可選

執行模擬鏡像操作。使用此操作來測試 mc mirror 操作是否只會鏡像所需的物件或儲存桶。

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

--exclude
可選

排除 SOURCE 路徑中與指定物件名稱模式相符的物件。

--exclude-bucket
可選

mc 版本新增:RELEASE.2024-03-03T00-13-08Z

排除 SOURCE 路徑中與指定儲存桶名稱模式相符的儲存桶。

--exclude-storageclass
可選

排除 SOURCE 上具有指定儲存類別的物件。您可以在命令中多次使用此旗標,以排除多個儲存類別的物件。

使用此功能可排除需要重新水合或還原的物件的儲存類別,例如從 AWS S3 儲存桶遷移,其中某些物件具有 GLACIERDEEP_ARCHIVE 儲存類別。

--limit-download
可選

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

  • B 表示位元組

  • K 表示千位元組

  • M 表示百萬位元組

  • G 表示十億位元組

  • T 表示兆位元組

  • Ki 表示千位元組

  • Mi 表示百萬位元組

  • Gi 代表吉比位元組 (gibibytes)

  • Ti 代表太比位元組 (tebibytes)

例如,要將下載速率限制為不超過 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 代表吉比位元組 (gibibytes)

  • Ti 代表太比位元組 (tebibytes)

例如,要將上傳速率限制為不超過 1 GiB/s,請使用以下方式

--limit-upload 1G

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

--md5
可選

強制所有上傳都要計算 MD5 檢查碼。

--monitoring-address
可選

建立一個 Prometheus 端點來監控鏡像活動。指定要建立抓取端點的本機網路介面卡和連接埠位址。預設為 localhost:8081)。

--newer-than
可選

鏡像早於指定天數的物件。以 #d#hh#mm#ss 格式指定字串。例如:--newer-than 1d2hh3mm4ss

--older-than
可選

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

預設為 0 (所有物件)。

--overwrite
可選

覆寫 目標上的物件。

例如,考慮一個作用中的 mc mirror --overwrite,將內容從來源同步到目的地。

如果來源上的物件發生變更,mc mirror --overwrite 會同步並覆寫目的地上的任何相符檔案。

如果沒有 --overwrite,如果目的地已存在物件,則鏡像程序會無法同步該物件。mc mirror 會記錄錯誤並繼續同步其他物件。

--preserve, a
可選

保留 來源的檔案系統屬性和儲存桶原則規則在目標上。

--region
可選

在目標上建立新儲存桶時,指定 字串 區域。

預設為 "us-east-1"

--remove
可選

移除目標上不存在於來源的物件。

使用 --remove 旗標,讓來源和目標上都有相同的物件清單。

例如,物件 A、B 和 C 存在於來源上。物件 C、D 和 E 存在於目標上。

當執行 mc mirror --remove 時,物件 A 和 B 會同步到目標,而物件 D 和 E 會從目標中移除。由於物件 C 已存在於兩者上,因此不會從來源移動到目標。

執行此操作後,只有物件 A、B 和 C 會同時存在於來源和目標上。

mc mirror --remove 不會驗證物件 C 的內容在來源和目標上是否相同,只會驗證是否兩者上都存在一個名為 C 的物件。若要確保來源和目標上的物件同時符合名稱 內容,請使用 --overwrite--watch

在版本 RELEASE.2023-05-04T18-10-16Z 中變更:如果目標路徑是不存在的本機檔案系統目錄,mc mirror --remove 會傳回錯誤。

在先前版本中,如果 directory 不存在,指定 /path/to/directory 會導致移除 /path/to 資料夾。

--retry
可選

如果在鏡像程序期間發生錯誤,請針對每個發生錯誤的物件重試。

--storage-class, sc
可選

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

如需 S3 儲存類別的詳細資訊,請參閱 Amazon 文件中的儲存類別

--skip-errors
可選

mc 版本新增:RELEASE.2024-01-28T16-23-14Z

跳過任何在鏡像時產生錯誤的物件。

--summary
可選

完成後,輸出已同步的資料摘要。

--watch, w
可選

使用 --watch 旗標將物件從來源鏡像到目標,其中目標也可能具有來源上不存在的其他物件。

  • --watch 會持續將檔案從來源同步到目標,直到明確終止。

  • 目標可能具有來源上不存在的檔案。

  • 如果來源上存在相符的物件,--watch 會覆寫目標上的物件,類似於 --overwrite 旗標。

預設為 0 (所有物件)。

例如,受監看的來源上存在物件 A 和 B。受監看的目標上存在物件 A、B 和 C。

用戶端將物件 D 寫入來源並移除物件 B。

執行此操作後,物件 A 和 D 存在於來源上。物件 A、C 和 D 存在於目標上。

全域旗標

此命令支援任何全域旗標

範例

將本機目錄鏡像到與 S3 相容的主機

使用 mc mirror 將檔案從檔案系統鏡像到 S3 主機

mc mirror FILEPATH ALIAS/PATH
  • 檔案路徑 取代為要鏡像的目錄的完整檔案路徑。

  • 別名 取代為已設定之與 S3 相容的主機的別名

  • 路徑 取代為目的地儲存桶。

持續將本機目錄鏡像到與 S3 相容的主機

mc mirror--watch 搭配使用,以持續將檔案從檔案系統鏡像到與 S3 相容的主機,其中新增到或刪除自檔案系統的物件會新增到或刪除自主機。

mc mirror --watch FILEPATH ALIAS/PATH
  • 檔案路徑 取代為要鏡像的目錄的完整檔案路徑。

  • 別名 取代為已設定之與 S3 相容的主機的別名

  • 路徑 取代為目的地儲存桶。

持續將 S3 儲存桶鏡像到與 S3 相容的主機

使用 mc mirror 搭配 --watch,可以持續將一個 S3 相容主機上的儲存桶中的物件鏡像到另一個 S3 相容主機,其中新增或從儲存桶刪除的物件也會新增到或從該主機刪除。

mc mirror --watch SRCALIAS/SRCPATH TGTALIAS/TGTPATH
  • SRCALIAS 替換為已設定的 S3 相容主機的 alias

  • SRCPATH 替換為要鏡像的儲存桶。

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

  • TGTPATH 替換為目標儲存桶。

將 AWS S3 的物件鏡像到 MinIO,並跳過 GLACIER 中的物件

使用 mc mirror 搭配 --exclude-storageclass,可以將 AWS S3 的物件鏡像到 MinIO,而不會鏡像 GLACIER 或 DEEP_ARCHIVE 儲存中的物件。

mc mirror --exclude-storageclass GLACIER  \
   --exclude-storageclass DEEP_ARCHIVE SRCALIAS/SRCPATH TGALIAS/TGPATH
  • SRCALIAS 替換為已設定的 S3 主機的 alias

  • SRCPATH 替換為要鏡像的儲存桶。

  • TGTALIAS 替換為已設定的 S3 主機的 alias

  • TGTPATH 替換為目標儲存桶。

行為

鏡像在物件失敗時繼續

如果目標上存在同名的物件,MinIO 會針對重複的物件輸出錯誤。在錯誤發生後,mc mirror 會繼續將其他物件從來源鏡像到目標。

MinIO 在移除物件時會修剪空的字首

mc mirror --watch 命令會持續同步來源和目標,以新增和刪除物件。這包括自動移除目標上在來源中被移除的物件。

若要讓來源上更新的物件也在目標上更新,請使用 –overwrite。若要移除目標上不在來源上的物件,請使用 –remove

mc mirror --watch 依賴 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 mirror --watch 用於檔案系統上的操作,mc 會應用相同的行為,遞迴地修剪直到根目錄的空目錄路徑。但是,mc 移除 API 無法區分明確建立的目錄路徑和隱式建立的目錄路徑。如果 mc mirror --watch 刪除檔案系統路徑上的最後一個物件,則 mc 會遞迴地刪除該路徑中直到根目錄的所有空目錄,作為移除操作的一部分。

S3 相容性

mc 命令列工具旨在與 AWS S3 API 相容,並使用 MinIO 和 AWS S3 進行測試,以確保其預期的功能和行為。

MinIO 不保證其他 S3 相容服務的功能,因為它們的 S3 API 實作未知,因此不受支援。雖然 mc 命令可能會如文件所述正常工作,但任何此類使用均由您自行承擔風險。