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
,其中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
- --active-active
- 可選
在兩個站點之間建立主動-主動鏡像活動。必須在每個站點重複該命令。
例如
在站點 A 上,要從 A 鏡像到 B
mc mirror --active-active siteA siteB
在站點 B 上,要從 B 鏡像到 A
mc mirror --active-active siteB siteA
- --checksum
- 可選
2024-10-02T08-27-28Z 版本新增功能。
將校驗和新增到上傳的物件。
有效值為:-
MD5
-CRC32
-CRC32C
-SHA1
-SHA256
此旗標需要伺服器尾部標頭,並適用於 AWS 或 MinIO 目標。
- --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-storageclass
- 可選
排除
SOURCE
上具有指定儲存類別的物件。您可以在命令中多次使用此旗標,以排除多個儲存類別的物件。使用此功能可排除需要重新水合或還原的物件的儲存類別,例如從 AWS S3 儲存桶遷移,其中某些物件具有
GLACIER
或DEEP_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 將使用無限制的上傳速率。
- --monitoring-address
- 可選
建立一個 Prometheus 端點來監控鏡像活動。指定要建立抓取端點的本機網路介面卡和連接埠位址。預設為
localhost:8081
)。
- --overwrite
- 可選
覆寫
目標
上的物件。例如,考慮一個作用中的
mc mirror --overwrite
,將內容從來源同步到目的地。如果來源上的物件發生變更,
mc mirror --overwrite
會同步並覆寫目的地上的任何相符檔案。如果沒有
--overwrite
,如果目的地已存在物件,則鏡像程序會無法同步該物件。mc mirror
會記錄錯誤並繼續同步其他物件。
- --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
資料夾。
- --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 相容的主機
將 mc mirror
與 --watch
搭配使用,以持續將檔案從檔案系統鏡像到與 S3 相容的主機,其中新增到或刪除自檔案系統的物件會新增到或刪除自主機。
mc mirror --watch FILEPATH ALIAS/PATH
持續將 S3 儲存桶鏡像到與 S3 相容的主機
使用 mc mirror
搭配 --watch
,可以持續將一個 S3 相容主機上的儲存桶中的物件鏡像到另一個 S3 相容主機,其中新增或從儲存桶刪除的物件也會新增到或從該主機刪除。
mc mirror --watch SRCALIAS/SRCPATH TGTALIAS/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
行為
鏡像在物件失敗時繼續
如果目標上存在同名的物件,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 命令可能會如文件所述正常工作,但任何此類使用均由您自行承擔風險。