文件

mc rm

語法

mc rm 命令會從 MinIO 部署上的儲存桶移除物件。若要完全移除儲存桶,請改用 mc rb

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

如需 MinIO 如何對物件執行 DELETE 動作的詳細資訊,請參閱 物件刪除

重要

mc rm 支援在單一命令中移除多個物件檔案。請考慮使用 --dry-run 選項來驗證該作業是否僅針對所需的物件/檔案。

以下命令會從 myminio MinIO 部署上的 mydata 儲存桶中移除多個物件

mc rm --recursive myminio/mydata

該命令具有以下語法

mc [GLOBALFLAGS] rm  \
                 [--bypass]               \
                 [--dangerous]            \
                 [--dry-run]              \
                 [--force]*               \
                 [--incomplete]           \
                 [--newer-than "string"]  \
                 [--non-current]          \
                 [--older-than "string"]  \
                 [--recursive]            \
                 [--rewind "string"]      \
                 [--stdin]                \
                 [--version-id "string"]* \
                 [--versions]             \
                 ALIAS [ALIAS ...]
  • 方括號 [] 表示選用參數。

  • 共享一行的參數是相互依存的。

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

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

mc rm --force 為多個參數所必需。 mc rm --version-id 與多個參數互斥。請參閱參考文件以獲取更多資訊。

參數

ALIAS
必要

MinIO 部署的別名以及要移除的物件完整路徑。例如

mc rm play/mybucket/object.txt

您可以在相同或不同的 MinIO 部署上指定多個物件。例如

mc rm play/mybucket/object.txt play/mybucket/otherobject.txt

如果指定儲存桶或儲存桶前綴的路徑,您必須同時指定 --recursive--force 參數。例如

mc rm --recursive --force play/mybucket/

mc rm --recursive --force play/mybucket/myprefix/

請考慮先使用 --dry-run 標誌執行命令,以驗證遞迴刪除操作的範圍。

若要從本機檔案系統中移除檔案,請指定該檔案的完整路徑

mc rm ~/data/myoldobject.txt
--bypass
選用

允許移除在 GOVERNANCE 物件鎖定下保留的物件。

--dangerous
選用

ALIAS 指定 MinIO 部署上的根目錄(所有儲存桶)時,允許執行 mc rm

當與 --versions 組合使用時,此標誌會指示 mc rmALIAS 目標永久移除所有物件*和*版本。

請考慮先使用 --dry-run 來執行命令,以驗證全站刪除操作的範圍。

警告

使用 --versions 標誌執行 mc rm --dangerous 是不可逆的。在執行之前,請盡一切可能盡職地確保命令僅適用於所需的 ALIAS 目標。

--dry-run
選用

輸出命令的結果,而實際上不移除任何檔案。使用此標誌來測試您的命令配置僅移除您想要移除的物件。

--force
選用

允許使用以下任何參數執行 mc rm

--incomplete, I
選用

移除指定物件的不完整上傳。

如果任何 ALIAS 指定儲存桶,您必須同時指定 --recursive--force

--newer-than
選用

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

預設為 0(所有物件)。

--non-current
選用

從指定的 ALIAS 移除所有非當前物件版本。

此選項對未啟用 版本控制 的儲存桶沒有影響。

--older-than
選用

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

預設為 0(所有物件)。

--recursive, r
選用

遞迴移除每個 ALIAS 儲存桶或儲存桶前綴的內容。

如果指定 --recursive,您必須同時指定 --force

對於啟用 版本控制 的儲存桶,此選項預設會為每個移除的物件產生一個刪除標記。包含 --versions 標誌以遞迴移除儲存桶中的所有物件*和*物件版本。

請考慮先使用 --dry-run 標誌執行命令,以驗證遞迴刪除操作的範圍。

mc rm --version-id 互斥

--rewind
選用

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

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

  • 若要倒轉一段時間,請將持續時間指定為 #d#hh#mm#ss 格式的字串。例如:--rewind "1d2hh3mm4ss"

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

--stdin
選用

STDIN 讀取物件名稱或儲存桶。

--versions
選用

指示 mc rm 對儲存桶中存在的所有物件版本執行操作。

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

--versions--rewind 一起使用,以移除在特定時間點存在的所有物件版本。

--version-id, vid
選用

指示 mc rm 僅針對指定的物件版本執行操作。

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

與下列任何旗標互斥

全域旗標

此命令支援任何 全域旗標

範例

移除單一物件

mc rm ALIAS/PATH
  • ALIAS 替換為已設定的相容 S3 服務的 別名

  • PATH 替換為物件的路徑。

遞迴移除儲存桶的內容

mc rm--recursive--force 選項搭配使用,以遞迴移除儲存桶的內容。

mc rm --recursive --force ALIAS/PATH
  • ALIAS 替換為已設定的相容 S3 服務的 別名

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

此操作不會移除儲存桶。使用 mc rb 來移除儲存桶以及所有內容和相關設定。

移除物件的所有不完整上傳檔案

mc rm--incomplete 選項搭配使用,以移除物件的不完整上傳檔案。

mc rm --incomplete --recursive --force ALIAS/PATH
  • ALIAS 替換為已設定的相容 S3 服務的 別名

  • PATH 替換為物件的路徑。

將物件回溯到先前的版本

mc rm--versions--newer-than 搭配使用,以移除所有比指定時間長度還新的物件版本。這實際上會將物件「回溯」到當時的狀態。

重要

移除物件的特定版本是一種破壞性操作。您無法還原已刪除的物件版本。

mc rm ALIAS/PATH --versions --newer-than DURATION
  • ALIAS 替換為已設定的相容 S3 服務的 別名

  • PATH 替換為物件的路徑。例如,/mybucket/myobject

  • DURATION 替換為從目前主機時間開始移除物件版本的過去天數。例如,若要移除在過去 30 天內建立的所有物件版本,請指定 "30d"

行為

刪除儲存桶內容

使用 mc rm 來移除儲存桶中的所有內容不會刪除儲存桶本身。與儲存桶相關聯的任何設定都會保留,例如 預設 物件 鎖定 設定

若要完全移除儲存桶,請使用 mc rb 而不是 mc rm

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

mc rm 依賴 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 rm 來對檔案系統執行操作,則 mc 會套用相同的行為,方法是將空的目錄路徑遞迴修剪到根目錄。但是,mc 移除 API 無法區分明確建立的目錄路徑和隱含建立的目錄路徑。如果 mc rm 刪除檔案系統路徑中的最後一個物件,則 mc 會在移除操作中遞迴刪除該路徑中的所有空目錄,直到根目錄為止。

已設定版本的儲存桶中的刪除操作

MinIO 支援在單一儲存桶中保留物件的多個版本。在已設定版本的儲存桶中刪除物件會產生特殊的 DeleteMarker 墓碑,將物件標記為已刪除,同時保留該物件的所有先前版本。

變更於 mc 版本:RELEASE.2023-03-20T17-17-53Z

輸出會顯示版本化檔案的修改時間。與 --dry-run 一起使用時,這有助於確認您已選取要移除的正確物件。

S3 相容性

mc 命令行工具是為與 AWS S3 API 相容而構建的,並已透過 MinIO 和 AWS S3 進行測試,以確保預期的功能和行為。

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