注意:

從物件儲存刪除大量 / 批次中的物件

簡介

從物件儲存刪除物件的方式有多種不同。您可以透過主控台、CLI 或 API/SDK 執行單一物件刪除作業。不過,當刪除大量物件時,問題會變得不可分割。本教學課程說明下列可用於大量 / 批次刪除物件的方法:

指向備註

請注意下列幾點,使用 OCI CLI 大量刪除物件

請注意下列幾點,使用 OLM 大量刪除物件

我應該使用哪種方法?

大量 / 批次物件刪除方法之間的主要差異在於實行中。為了重申,OCI CLI bulk-delete 命令會在從屬端以同步方式實行,OLM 在伺服器端會以非同步方式實行。一般而言,使用下列準則來決定要使用的方法。

使用 CLI bulk-delete (如果): 使用 OLM 大量刪除,如果:
可同步刪除 (因為 CLI 同步) 刪除必須以非同步方式進行 (因為 OLM 為非同步)
一次性刪除 應發生的週期性刪除
物件數目很小 物件數目很多
需要立即刪除物件 物件刪除可以等候 (短暫延遲)

目標

必要條件

方法 1:透過 OCI CLI 刪除大量 / 批次中的物件

您可以使用下列任何一種方法,從 OCI CLI 大量刪除物件。

刪除儲存桶內大量的物件

您可以使用 OCI CLI 透過下列命令,大量刪除儲存桶內的物件:

oci os object bulk-delete -bn <bucket_name>

注意:如果您不想要執行刪除作業,但只想查看將刪除物件的計畫,可以使用 --dry-run 選項。

oci os object bulk-delete -bn <bucket_name> --dry-run
{
  "delete-failures": {},
  "deleted-objects": [
    "1000_sales.csv",
    "rick_and_morty.json"
  ]
}

依前置碼大量刪除物件

您可以新增 --prefix 選項,指定只符合特定前置碼的物件刪除。下列指令會刪除所有符合字首 <some_prefix> 的物件。

oci os object bulk-delete -bn <bucket_name> --prefix <some_prefix>

例如,如果您要刪除字首為 "rick" 的物件,請使用下列命令:

oci os object bulk-delete -bn test-bucket-1 --prefix rick
WARNING: This command will delete at least 1 objects. Are you sure you wish to continue? [y/N]: y
Deleted object rick_and_morty.json  [####################################]  100%
{
    "delete-failures": {},
    "deleted-objects": [
    "rick_and_morty.json"
    ]
}

依樣式大量刪除物件 (包含)

您可以新增 --include 選項,指定只符合特定樣式的物件刪除。下列命令會刪除符合 <some_pattern> 樣式的所有物件。

oci os object bulk-delete -bn <bucket_name> --include <some_pattern>

例如,如果您只要刪除 JSON 檔案類型的物件,請使用下列命令:

oci os object bulk-delete -bn test-bucket-1 --include "*.json"
WARNING: This command will delete at least 1 objects. Are you sure you wish to continue? [y/N]: y
Deleted object rick_and_morty.json  [####################################]  100%
{
    "delete-failures": {},
    "deleted-objects": [
    "rick_and_morty.json"
    ]
}

依反向模式大量刪除物件 (排除)

您可以新增 --exclude 選項,來指定只不符合特定樣式的物件刪除。下列命令會刪除符合 <some_pattern> 樣式的所有物件,但這些物件除外。

oci os object bulk-delete -bn <bucket_name> --exclude <some_pattern>

例如,如果您要刪除 JSON 檔案類型以外的所有物件,請使用下列命令:

oci os object bulk-delete -bn test-bucket-1 --exclude "*.json"
WARNING: This command will delete at least 1 objects. Are you sure you wish to continue? [y/N]: y
Deleted object 1000_sales.csv  [####################################]  100%  
{
    "delete-failures": {},
    "deleted-objects": [
    "1000_sales.csv"
    ]
}

方法 2:透過 OLM 刪除大量 / 批次中的物件

除了 OCI CLI 之外,您也可以使用 OLM - 物件生命週期管理 - 功能大量刪除物件。OLM 功能可讓您建立生命週期規則,指定符合特定條件時要採取的動作。例如,我們可以指定要刪除 30 天以內的物件。

在 OCI 主控台 /CLI 上建立大量刪除生命週期規則

可以透過 OCI 主控台建立生命週期規則。按一下儲存桶,然後在側面的「生命週期原則規則」頁籤中執行此操作。然後,對話方塊應該會彈出,讓使用者可以設定其規則。

建立生命週期規則主控台對話方塊

生命週期規則也可以透過 OCI CLI 建立。下列命令是使用 OCI CLI 建立週期規則的範例。此規則會刪除超過 10 天的所有物件。

oci os object-lifecycle-policy put --bucket-name test-bucket-1 --items '[
    {
        "action": "DELETE",
        "isEnabled": true,
        "name": "lifecycle-rule-delete-all",
        "target": "objects",
        "timeAmount": 10,
        "timeUnit": "DAYS"
    }
]'

依前置碼建立大量刪除生命週期規則

在 OCI 主控台中,您可以根據特定條件為要刪除的物件指定「物件名稱」篩選。它可以處理物件名稱前置碼比對。下列螢幕擷取畫面顯示的生命週期規則將會刪除前置碼為 test/ 的所有物件。

建立生命週期規則主控台字首

與主控台類似,OCI CLI 也可以指定透過前置碼比對刪除的物件。

oci os object-lifecycle-policy put --bucket-name <test_bucket> --items '[
    {
        ...
        "objectNameFilter": {
            "exclusionPatterns": [],
            "inclusionPatterns": [],
            "inclusionPrefixes": [
                <some_prefix>
            ]
        },
        ...
    }
]'

例如,下列 OCI CLI 命令會建立 / 更新生命週期規則,以刪除前置碼為 test/ 的所有物件。請記住,–-items 選項的引數必須是有效的 JSON 清單。

oci os object-lifecycle-policy put --bucket-name test-bucket-1 --items '[
    {
        "action": "DELETE",
        "isEnabled": true,
        "name": "lifecycle-rule-delete-all",
        "objectNameFilter": {
            "exclusionPatterns": [],
            "inclusionPatterns": [],
            "inclusionPrefixes": [
                "test/"
            ]
        },
        "target": "objects",
        "timeAmount": 10,
        "timeUnit": "DAYS"
    }
]'

依樣式比對建立大量刪除生命週期規則 (包含項目)

在 OCI 主控台中,您可以指定物件名稱篩選,依照樣式比對 (包含) 來刪除物件。下面的螢幕擷取畫面顯示將刪除所有 .doc 檔案類型的生命週期規則。

建立生命週期規則主控台模式包含

您也可以只刪除符合 OCI CLI 特定模式的檔案。

oci os object-lifecycle-policy put --bucket-name <bucket_name> --items '[
    {
        ...
        "objectNameFilter": {
            "exclusionPatterns": [],
            "inclusionPatterns": [
                <some_pattern>
            ],
            "inclusionPrefixes": []
        },
        ...
    }
]'

例如,下列 OCI CLI 命令會建立 / 更新將刪除所有 .doc 檔案類型的生命週期規則。

oci os object-lifecycle-policy put --bucket-name test-bucket-1 --items '[
    {
        "action": "DELETE",
        "isEnabled": true,
        "name": "lifecycle-rule-delete-all",
        "objectNameFilter": {
            "exclusionPatterns": [],
            "inclusionPatterns": [
                "*.doc"
            ],
            "inclusionPrefixes": []
        },
        "target": "objects",
        "timeAmount": 10,
        "timeUnit": "DAYS"
    }
]'

依反向模式比對 (排除) 建立大量刪除生命週期規則

在 OCI 主控台中,您可以透過反向樣式比對 (排除) 指定要刪除物件的「物件名稱篩選」,亦即除了符合樣式的物件之外,還可以刪除所有物件。下列螢幕擷取畫面顯示的生命週期規則會刪除 .txt 檔案類型以外的所有項目。

建立生命週期規則主控台模式排除

除了符合 OCI CLI 特定樣式的檔案之外,您也可以刪除所有檔案。

oci os object-lifecycle-policy put --bucket-name <bucket_name> --items '[
    {
        ...
        "objectNameFilter": {
            "exclusionPatterns": [
                <some_pattern>
            ],
            "inclusionPatterns": [],
            "inclusionPrefixes": []
        },
        ...
    }
]'

例如,下列 OCI CLI 命令會建立 / 更新生命週期規則,此規則將刪除 .txt 檔案類型以外的所有物件。

oci os object-lifecycle-policy put --bucket-name test-bucket-1 --items '[
    {
        "action": "DELETE",
        "isEnabled": true,
        "name": "lifecycle-rule-delete-all",
        "objectNameFilter": {
            "exclusionPatterns": [
                "*.txt"
            ],
            "inclusionPatterns": [],
            "inclusionPrefixes": []
        },
        "target": "objects",
        "timeAmount": 10,
        "timeUnit": "DAYS"
    }
]'

致謝

其他學習資源

探索 docs.oracle.com/learn 上的其他實驗室,或存取 Oracle Learning YouTube 通道上的更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。

如需產品文件,請瀏覽 Oracle Help Center