削除されたオブジェクトのリストア

削除したオブジェクトをオブジェクト・ストレージ・バケットにリカバリします。

バージョン管理が有効な場合、特定のバージョンをターゲットにせずにオブジェクトを削除すると、削除マーカーが作成され、そのオブジェクトの以前のバージョンをリカバリできます。削除されたオブジェクトは、「削除されたオブジェクトの表示」機能が選択されている場合にのみ、「オブジェクト」リストに表示されます。リストされた削除済オブジェクトには、オブジェクト・エントリ名の横に(削除済オブジェクト)があります。削除したオブジェクトのバージョン・リストを展開し、その横に(マーカーの削除)があるバージョンを探します。削除したオブジェクト・バージョンをリストアするには、その削除マーカーを削除します。以前のバージョンが存在する場合、そのバージョンがライブ・オブジェクトになります。

ノート

オブジェクトのアップロード時に、オブジェクト・ストレージ・バケットのバージョニングを有効にする必要があります。バージョニングが無効または一時停止のバケットから削除されたオブジェクトは、リカバリできません。

    1. ナビゲーション・メニューを開き、「ストレージ」をクリックします。「オブジェクト・ストレージおよびアーカイブ・ストレージ」で、「バケット」をクリックします。
    2. 「リスト範囲」の下のリストからコンパートメントを選択します。そのコンパートメント内のすべてのバケットが表形式でリストされます。
    3. 削除したオブジェクトをリストアするバケットをクリックします。バケットの「詳細」ページが表示されます。
    4. 「リソース」の下の「オブジェクト」をクリックします。「オブジェクト」リストが表示されます。すべてのフォルダおよびオブジェクトが表形式でリストされます。
    5. 「削除したオブジェクトの表示」を選択します。フォルダおよびサブフォルダを含む削除されたオブジェクトが表示されます。
    6. リカバリするオブジェクトに移動します。
    7. オブジェクト・エントリの横にある下矢印(オブジェクト・バージョンの表示)をクリックします。オブジェクトのバージョンが表示されます。最新バージョンがリストの上部に表示され、「最新バージョン」と表示されます。
    8. オブジェクトの削除マーカーの横にある「アクション」メニュー(アクション・メニュー)をクリックし、「削除」をクリックします。
    9. プロンプトが表示されたら、削除を確認します。

    削除マーカーを削除したオブジェクトの後にリストされたオブジェクト・バージョンが、リストアされたオブジェクトになります。

  • CLIを使用してバケット内の削除済オブジェクトをリストアするには、最初に削除対象としてマークされているオブジェクトを把握する必要があります。その情報を取得するには、バケット内のオブジェクトをリストします。バケット内のオブジェクト・バージョンのリストを参照し、「CLI」タブを選択して適切なコマンドを実行します。

    出力で、"is-delete-marker": trueのオブジェクト・バージョンを検索します。

    バケット内の削除済オブジェクトをリストアするには、oci os object deleteコマンドと必要なパラメータを使用します。version-idパラメータとそのオブジェクトの値を含めます。

    oci os object delete --bucket-name bucket_name --object-name object_name --version-id version_id [OPTIONS]
    このコマンドを実行すると、削除の確認を求められます。
    Are you sure you want to delete this resource? [y/N]:

    yで回答します。

    例:

    oci os object delete --bucket-name MyBucket --name MyFile.txt --version-id 2a0021a1-2a2f-41a0-a199-454003f84aa0
    Are you sure you want to delete this resource? [y/N]: y

    オブジェクトの削除マーカーは削除され、それ以上の情報は返されません。オブジェクトはそのバケットにリストアされます。削除マーカーを削除した後、オブジェクトをリストしてリストアされたことを確認できます。

    削除されたオブジェクトの一括復元

    1つのバケット内の複数のオブジェクトを同時にリストアするには、使用可能なOCI CLIフィルタを使用して"is-delete-marker": trueインジケータを問い合せます。詳細は、CLIの入力および出力の管理の「問合せの使用」を参照してください。

    たとえば、削除されたオブジェクトのグループをリストアするには、次のコマンドを実行して、削除マーカーを含むオブジェクトのリストと、削除された各オブジェクトのバージョンIDを取得します。

    oci os object list-object-versions --bucket-name MyBucket --query "data[?\"is-delete-marker\"].{Name:name,version:\"version-id\"}"|jq -r '.[]

    次に、出力を別のコマンドにパイプするか、ラッパー・スクリプトを記述してバケット内の削除済オブジェクトをリストアします。たとえば、Linuxホストで削除マーカーを使用してバケット内のすべてのオブジェクトをリストアするには、次のコマンドを実行します:

    oci os object list-object-versions --bucket-name MyBucket --query "data[?\"is-delete-marker\"].{Name:name,version:\"version-id\"}"|jq -r '.[] | join(" ")'| xargs -n 2 sh -c 'oci os object delete --namespace MyNamespace --bucket-name MyBucket --object-name "$1" --version-id "$2"' argv0
    

    --forceパラメータを使用すると、対話モードを回避できます。ただし、重要な情報が欠落しないように、このオプションを慎重に使用してください。

    CLIコマンドのパラメータおよび値の完全なリストは、CLIコマンド・リファレンスを参照してください。

  • まず、ListObjectVersions操作を使用して、"is-delete-marker": trueを持つオブジェクトを検索します。次に、DeleteObject操作を使用して、オブジェクトから削除マーカーを削除します。