このトピックでは、不要な料金の発生を防ぐために、rm コマンドを実行して不要になったオブジェクト、パート、またはバケットを削除する方法について説明します。
注意事項
-
単一のオブジェクトを削除するには、
oss:DeleteObject許可が必要です。 ディレクトリ内のすべてのオブジェクトを削除するには、oss:DeleteObjectおよびoss:ListObjectsの許可が必要です。 特定のオブジェクトバージョンを削除するには、oss:DeleteObjectVersion許可が必要です。 バケット内のすべてのオブジェクトバージョンを削除するには、oss:ListObjectVersionsおよびoss:DeleteObjectVersionの許可が必要です。 ディレクトリ内のすべてのオブジェクトバージョンを削除するには、oss:DeleteObjectVersionおよびoss:ListObjectsの許可が必要です。 オブジェクトのパートを削除するには、oss:ListMultipartUploadsおよびoss:AbortMultipartUploadの許可が必要です。 バケット内のすべてのオブジェクトとパートを削除するには、oss:ListMultipartUploads、oss:AbortMultipartUpload、oss:ListObjects、およびoss:DeleteObjectの許可が必要です。 バケットを削除するには、oss:DeleteBucket許可が必要です。 -
ossutil 1.6.16 以降では、コマンドラインでバイナリ名として ossutil を直接使用できます。 オペレーティングシステムに基づいてバイナリ名を更新する必要はありません。 1.6.16 より前の ossutil では、オペレーティングシステムに基づいてバイナリ名を更新する必要があります。 詳細については、「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>]
次の表に、構文のパラメーターとオプションを示します。
|
パラメーター/オプション |
説明 |
|
バケット名 |
バケットの名前。 |
|
プレフィックス |
ディレクトリやオブジェクトなどのリソース名に含まれるプレフィックス。 |
|
-r, --recursive |
このオプションを指定すると、ossutil は、指定されたプレフィックスを名前に含むすべてのオブジェクトをバケットから削除します。 このオプションを指定しない場合、ossutil は指定されたオブジェクトのみを削除します。 |
|
-b, --bucket |
バケットの削除を指定します。 このオプションは、バケットを削除する場合にのみ必要です。 |
|
-m, --multipart |
バケット内の未完了のマルチパートアップロードタスクに対して操作を実行することを指定します。 |
|
-a, --all-type |
指定されたプレフィックスを名前に含むオブジェクト、およびバケット内の未完了のマルチパートアップロードタスクによって作成されたデータに対して操作を実行することを指定します。 |
|
-f, --force |
確認を求めずに操作を強制実行します。 |
|
--include |
指定された条件に一致するすべてのオブジェクトを含めます。 詳細については、「オプション --include と --exclude」をご参照ください。 |
|
--exclude |
指定された条件に一致するすべてのオブジェクトを除外します。 詳細については、「オプション --include と --exclude」をご参照ください。 |
|
--version-id |
オブジェクトのバージョン ID。 このパラメーターは、バージョン管理が有効または停止されているバケットにのみ適用されます。 |
|
--all-versions |
オブジェクトのすべてのバージョンを指定します。 このオプションは、バージョニングが有効または一時停止されているバケット内のオブジェクトにのみ適用されます。 1 つの rm コマンドで指定できるのは、--version-id と --all-versions のいずれか 1 つのオプションのみです。 |
|
--payer |
操作によって発生する料金の支払者を指定します。 指定されたパスのリソースにアクセスするリクエスタに、トラフィック料金やリクエスト料金などの料金を支払わせる場合は、このパラメーターを requester に設定します。 |
|
--encoding-type |
|
オブジェクトの削除
削除されたオブジェクトは復元できません。 この操作は慎重に実行してください。
rm コマンドを -r オプションの有無にかかわらず使用して 1 つ以上のオブジェクトを削除すると、ListObjects (GetBucket) および DeleteObject 操作が呼び出されます。この場合、PUT リクエストの送信に対して課金されます。詳細については、「リクエスト料金」をご参照ください。
-
rmコマンドで--includeオプションと--excludeオプションを使用してオブジェクトを削除する場合、不適切な条件設定が原因で誤って削除される可能性があります。rmコマンドで両方のオプションを使用する場合は、慎重に行うことを推奨します。 -
--includeオプションと--excludeオプションには、複数の条件を指定できます。 すべての条件が左から右に適用され、オブジェクトが照合されます。 複数の条件を指定する場合は、--excludeオプションの前に--includeオプションを指定することを推奨します。
-
例
-
単一オブジェクトの削除
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****オブジェクトのすべてのバージョンを取得する方法の詳細については、「ls」をご参照ください。
-
バージョン管理が有効なバケット
examplebucketから、exampleobject.txtという名前のオブジェクトのすべてのバージョンを削除します。ossutil rm oss://examplebucket/exampleobject.txt --all-versions -
バージョン管理が有効なバケット
examplebucketから、すべてのオブジェクトのすべてのバージョンを削除します。ossutil rm oss://examplebucket --all-versions -r
説明オブジェクト名に SOH (0x01)、BS (0x08)、DEL (0x7F) などの制御文字が含まれている場合、
--encoding-typeオプションなしでossutil rmを実行すると、オブジェクト名が正しく解析されないため、オブジェクトの照合に失敗します。 同様に、--encoding-typeなしでossutil lsを実行してもこれらの制御文字は表示されないため、オブジェクトはバケット内にまだ存在しているにもかかわらず、見つからないように見えます。--encoding-type urlを指定すると、ossutil は制御文字を含むオブジェクト名を正しく表示し、照合できます。 -
-
出力例
成功のレスポンスには、削除されたオブジェクトの数と、削除操作の完了にかかった時間が含まれます。
Succeed: Total 8 objects. Removed 8 objects. 0.106852(s) elapsed
パートの削除
複数のオプションを指定して rm コマンドを使用してパートを削除すると、ListMultipartUploads、ListParts、および AbortMultipartUpload オペレーションが呼び出されます。 この場合、ListMultipartUploads および ListParts オペレーションが呼び出されると GET リクエストの送信に対して、AbortMultipartUpload オペレーションが呼び出されると PUT リクエストの送信に対して課金されます。 詳細については、「リクエスト料金」をご参照ください。
-
例
-
examplebucket という名前のバケットから exampleobject.txt という名前のオブジェクトの不完全なマルチパートアップロードタスクによって生成されたパーツを削除するには、コマンドで -m オプションを指定します。
ossutil rm -m oss://examplebucket/exampleobject.txt -
examplebucketという名前のバケットから、名前に "test" プレフィックスが含まれるオブジェクトの未完了のマルチパートアップロードタスクによって生成されたパーツを再帰的に削除するには、コマンドで -m オプションと -r オプションを指定します。ossutil rm -m oss://examplebucket/test -r Do you really mean to remove recursively multipart uploadIds of oss://examplebucket/test(y or N)? y -
examplebucket バケットから、"src" プレフィックスを持つオブジェクトと、これらのオブジェクトの未完了のマルチパートアップロードタスクによって生成されたパートを再帰的に削除するには、コマンドで -a オプションと -r オプションを指定します。
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
-
-
レスポンス例
成功のレスポンスには、削除されたオブジェクトの数、削除されたパートを生成したマルチパートアップロードタスクの数、および削除操作の完了にかかった時間が含まれます。
Succeed: Total 1 objects, 3 uploadIds. Removed 1 objects, 3 uploadIds. 1.922915(s) elapsed
バケットの削除
-
オブジェクトまたはパートを含まない
examplebucketバケットを削除します。ossutil rb oss://examplebucket Do you really mean to remove the Bucket: examplebucket(y or N)? y成功のレスポンスには、削除されたバケットの名前と、バケットの削除にかかった時間が含まれます。
Removed Bucket: examplebucket 2.230745(s) elapsed -
examplebucketという名前のバケットと、そのバケット内のすべてのオブジェクトおよびパートを削除します。 バケットとそのコンテンツを完全に削除するには、まず-aと-rオプションを指定してrmコマンドを実行してバケットのコンテンツをすべて削除し、次にrbコマンドで空のバケットを削除します。警告次のコマンドを実行すると、バケット内のすべてのデータが削除され、削除されたデータは復元できません。 この操作は慎重に実行してください。
# ステップ 1: バケット内のすべてのオブジェクトと未完了のマルチパートアップロードタスクを再帰的に削除します。 ossutil rm oss://examplebucket -a -r Do you really mean to remove recursively objects and multipart uploadIds of oss://examplebucket(y or N)? y # ステップ 2: 空になったバケットを削除します。 ossutil rb oss://examplebucket Do you really mean to remove the Bucket: examplebucket(y or N)? y上記のコマンドが正常に実行されると、出力には削除されたオブジェクトの数、削除されたパートを生成したマルチパートアップロードタスクの数、削除されたバケットの名前、および操作の完了にかかった時間が含まれます。
Succeed: Total 189 objects, 37 uploadIds. Removed 189 objects, 37 uploadIds. Removed Bucket: examplebucket 9.184193(s) elapsed
トラブルシューティング
バケット内のオブジェクト名に SOH (0x01)、BS (0x08)、DEL (0x7F) などの制御文字が含まれていることが原因で ossutil rm -b -a -r が失敗する場合は、以下の代替手順でバケットを削除します。
-
制御文字が表示されるように、オブジェクト名を URL エンコードしてバケット内のオブジェクトを一覧表示してください。
ossutil api list-objects --bucket <bucket_name> --encoding-type url --output-format json -
エンコードされたオブジェクト名を使用して削除リクエストのボディを構築し、オブジェクトを一括削除してください。
ossutil api delete-multiple-objects --bucket <bucket_name> --encoding-type url --delete file://delete-objects.xml -
空になったバケットを削除してください。
ossutil rb oss://<bucket_name>
ossutil 2.x では、バケットを削除するための -b オプションはサポートされなくなりました。rm -b の代わりに rb コマンドを使用してください。
NUL バイト (0x00) をオブジェクトキーに含めることはできません。 NUL バイトを含む名前のオブジェクトを作成しようとすると、OSS は 400 BadRequest エラーを返します。
共通オプション
別のリージョンのバケットにアクセスするには、 -e を使用してエンドポイントを指定します。 別の Alibaba Cloud アカウントが所有するバケットにアクセスするには、AccessKey ID には -i を、AccessKey secret には -k を使用します。
たとえば、次のコマンドを実行して、China (Shanghai) リージョンにあり、別の Alibaba Cloud アカウントに属するバケット testbucket から、exampletest.png という名前のオブジェクトを削除できます。
ossutil rm oss://testbucket/exampletest.png -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID -k yourAccessKeySecret
詳細については、「共通オプション」をご参照ください。