全部產品
Search
文件中心

Object Storage Service:rm(刪除)

更新時間:Jul 31, 2024

您可以通過rm命令刪除不再需要的檔案(Object)、片段(Part)或儲存空間(Bucket),以免產生不必要的儲存費用。

注意事項

  • 要刪除單個檔案,您必須具有oss:DeleteObject許可權;要刪除目錄中的所有檔案,您必須具有oss:DeleteObjectoss:ListObjects許可權;要刪除指定版本的檔案,您必須具有oss:DeleteObjectVersion許可權;要刪除所有版本的檔案,您必須具有oss:ListObjectVersionsoss:DeleteObjectVersion許可權;要刪除目錄下所有版本的檔案,您必須具有oss:DeleteObjectVersionoss:ListObjects許可權;要刪除某個Object的片段,您必須具有oss:ListMultipartUploadsoss:AbortMultipartUpload許可權;要刪除所有Object和片段,您必須具有oss:ListMultipartUploadsoss:AbortMultipartUploadoss:ListObjectsoss:DeleteObject許可權;要刪除Bucket,您必須具有oss:DeleteBucket許可權。

  • 從ossutil 1.6.16版本開始,命令列中Binary名稱支援直接使用ossutil,您無需根據系統重新整理Binary名稱。如果您的ossutil版本低於1.6.16,則需要根據系統重新整理Binary名稱。更多資訊,請參見命令列工具ossutil命令參考

命令格式

ossutil rm oss://bucketname[/prefix]
[-r,--recursive]
[-b,--bucket]
[-m,--multipart]
[-a,--all-type]
[-f,--force]
[--include <value>]
[--exclude <value>]
[--version-id <value>] 
[--all-versions]
[--payer <value>]
[--encoding-type <value>]

參數及選項說明如下:

配置項

說明

bucketname

Bucket名稱。

prefix

Bucket下的資源、例如目錄、檔案等。

-r,--recursive

如果指定該選項時,ossutil將刪除Bucket下所有符合prefix條件的Object。如果不指定該選項,則ossutil只刪除指定Object。

-b,--bucket

僅在刪除Bucket時使用此選項。

-m,--multipart

指定操作的對象為Bucket中未完成的Multipart事件。

-a,--all-type

指定操作的對象為Bucket中符合prefix條件的Object和未完成的Multipart事件。

-f,--force

強制操作,不進行詢問提示。

--include

包含符合指定條件的所有Object。

更多資訊,請參見include和exclude選項

--exclude

不包含任何符合指定條件的Object。

更多資訊,請參見include和exclude選項

--version-id

Object的指定版本。僅適用於已開啟或暫停版本控制狀態Bucket下的Object。

--all-versions

Object的所有版本。僅適用於已開啟或暫停版本控制狀態Bucket下的Object,且同一個刪除樣本中僅允許選擇--version-id--all-versions其中一個選項。

--payer

請求的支付方式。如果希望訪問指定路徑下的資源產生的流量、請求次數等費用由要求者支付,請將此選項的值設定為requester

--encoding-type

oss://bucket_name之後的prefix進行編碼,取值為url。如果不指定該選項,則表示prefix未經過編碼。

刪除Object

警告

Object刪除後無法恢複,請謹慎操作。

通過rm命令或者rm命令結合-r選項刪除單個或多個Object時,涉及調用ListObjects(GetBucket)以及DeleteObject請求,這兩類請求均產生Put類請求費用。更多資訊,請參見請求費用

警告
  • 如果您在刪除Object時同時包含了--include和--exclude選項,可能會由於規則的執行方式產生誤刪除的情況,請謹慎操作。

  • 一條規則可以包含多個include(包含)和exclude(排除)條件,且每個檔案從左至右逐一運用每個規則,直至最後才能最終確定匹配的結果。當您需要使用多條規則時,建議使用先包含再排除的模式,即先指定--include,再指定--exclude。

  • 刪除樣本

    • 刪除單個Object

      刪除examplebucket下名為exampleobject.txt檔案。

      ossutil rm oss://examplebucket/exampleobject.txt
    • 刪除examplebucket下與首碼test匹配的所有檔案。

      ossutil rm oss://examplebucket/test -r
    • 刪除examplebucket下尾碼為.png的所有檔案。

      ossutil rm oss://examplebucket  --include "*.png" -r
    • 刪除examplebucket下檔案名稱包含abc,且尾碼不是.jpg和.txt的檔案。

      ossutil rm oss://examplebucket  --include "*abc*" --exclude "*.jpg" --exclude "*.txt" -r
    • 刪除已開啟版本控制的examplebucket下exampleobject.txt的指定版本。

      ossutil rm oss://examplebucket/exampleobject.txt --version-id  CAEQARiBgID8rumR2hYiIGUyOTAyZGY2MzU5MjQ5ZjlhYzQzZjNlYTAyZDE3****

      有關擷取Object所有版本的具體操作,請參見ls(列舉帳號層級下的資源)

    • 刪除已開啟版本控制的examplebucket下exampleobject.txt的所有版本。

      ossutil rm oss://examplebucket/exampleobject.txt --all-versions
    • 刪除已開啟版本控制的examplebucket下所有Object的所有版本。

      ossutil rm oss://examplebucket --all-versions -r
  • 返回結果

    以上樣本刪除成功後,返回結果中將包含刪除的Object個數以及完成刪除操作所用時間長度,樣本如下:

    Succeed: Total 8 objects. Removed 8 objects.
    0.106852(s) elapsed

刪除Part

通過rm命令結合多個選項刪除Part時,涉及調用ListMultipartUploadsListParts以及AbortMultipartUpload請求。其中,ListMultipartUploads以及ListParts請求產生Get類請求費用,AbortMultipartUpload請求產生Put請求費用。更多資訊,請參見請求費用

  • 刪除樣本

    • 結合-m選項刪除examplebucket下exampleobject.txt中未完成的Multipart事件所產生的Part。

      ossutil rm -m oss://examplebucket/exampleobject.txt
    • 結合-m-r選項遞迴刪除examplebucket下與指定首碼test匹配的所有檔案中未完成的Multipart事件所產生的Part。

      ossutil rm -m oss://examplebucket/test -r 
      Do you really mean to remove recursively multipart uploadIds of oss://examplebucket/test(y or N)? y 
    • 結合-a-r選項遞迴刪除examplebucket下與指定首碼src匹配的所有已上傳完成檔案、以及未完成的Multipart事件所產生的Part。

      ossutil rm  oss://examplebucket/src -a -r
      Do you really mean to remove recursively objects and multipart uploadIds of oss://examplebucket/src(y or N)? y
  • 返回結果

    以上樣本刪除成功後,返回結果中將包含刪除的Object數量、Part對應的UploadID數量以及完成刪除操作所用時間長度,樣本如下:

    Succeed: Total 1 objects, 3 uploadIds. Removed 1 objects, 3 uploadIds.
    1.922915(s) elapsed

刪除Bucket

  • 刪除不包含Object或Part的examplebucket。

    ossutil rm oss://examplebucket -b
    Do you really mean to remove the Bucket: examplebucket(y or N)? y

    返回結果中包含刪除的Bucket名稱以及完成刪除操作所用時間長度。

    Removed Bucket: examplebucket
    2.230745(s) elapsed
  • 刪除examplebucket及其包含的所有Object和Part。

    警告

    此操作將清除Bucket中的所有資料,且刪除後不可恢複。請謹慎操作。

    ossutil rm  oss://examplebucket -b -a -r
    Do you really mean to remove recursively objects and multipart uploadIds of oss://examplebucket(y or N)? y
    Do you really mean to remove the Bucket: examplebucket(y or N)? y

    返回結果中包含刪除的Object數量、Part對應的UploadID數量、Bucket名稱完成刪除操作所用時間長度。

    Succeed: Total 189 objects, 37 uploadIds. Removed 189 objects, 37 uploadIds.
    Removed Bucket: examplebucket
    9.184193(s) elapsed

通用選項

當您需要通過命令列工具ossutil切換至另一個地區的Bucket時,可以通過-e選項指定該Bucket所屬的Endpoint。當您需要通過命令列工具ossutil切換至另一個阿里雲帳號下的Bucket時,可以通過-i選項指定該帳號的AccessKey ID,並通過-k選項指定該帳號的AccessKey Secret。

例如您需要刪除另一個阿里雲帳號下,華東2(上海)地區下目標儲存空間testbucket下的exampletest.png檔案,命令如下:

ossutil rm oss://testbucket/exampletest.png -e oss-cn-shanghai.aliyuncs.com -i LTAI4Fw2NbDUCV8zYUzA****  -k 67DLVBkH7EamOjy2W5RVAHUY9H****

關於此命令的其他通用選項的更多資訊,請參見通用選項