Hinweis:
- Dieses Tutorial erfordert Zugriff auf Oracle Cloud. Informationen zur Registrierung für einen kostenlosen Account finden Sie unter Erste Schritte mit Oracle Cloud Infrastructure Free Tier.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Ersetzen Sie diese Werte durch die für Ihre Cloud-Umgebung spezifischen Werte.
Objekte in Bulk/Batch aus Object Storage löschen
Einführung
Es gibt verschiedene Möglichkeiten, Objekte aus Object Storage zu löschen. Sie können Vorgänge zum Löschen einzelner Objekte über die Konsole, die CLI oder API/SDK ausführen. Das Problem wird jedoch beim Löschen einer extrem großen Anzahl von Objekten nicht trivial. In diesem Tutorial werden die folgenden Methoden beschrieben, mit denen Sie Objekte per Bulk-/Batchlöschung löschen können:
- Batch-/Massenlöschung über die Oracle Cloud Infrastructure-(OCI-)CLI
- Batch-/Massenlöschung über Object Lifecycle Management (OLM)
Zu beachtende Punkte
Beachten Sie die folgenden Punkte beim globalen Löschen von Objekten mit der OCI-CLI:
-
Wie wird der Bulk-Löschbefehl implementiert? Handelt es sich um einen synchronen oder asynchronen Vorgang?
Der Bulk-Löschbefehl wird synchron implementiert, d.h. er löscht Objekte einzeln, indem er Einzelobjekt-Löschanforderungen auf Clientseite absetzt. Es handelt sich nicht um einen asynchronen serverseitigen Vorgang. Beispiel: Wenn Sie den Befehl ausführen, dauert es lange, bis der Vorgang abgeschlossen ist. Wenn Sie den Befehl stoppen, bevor er ausgeführt wurde, werden nur einige der Objekte gelöscht, die mit dem Befehl gelöscht werden sollen. Es sind noch Objekte vorhanden, die noch verarbeitet/gelöscht werden müssen.
-
Wie kann ich den Fortschritt eines Bulk-Löschbefehls überwachen?
Der Fortschritt eines Bulk-Delete-Befehls wird direkt nach der Ausführung angezeigt. In Ihrem Terminal gibt es einen Balken mit
#
Zeichen und danach einen Prozentsatz (siehe Beispiele unten) - dies ist der Fortschritt des Bulk-Löschbefehls.
Beachten Sie die folgenden Punkte beim globalen Löschen von Objekten mit OLM:
-
Wie wird OLM implementiert? Handelt es sich um einen synchronen oder asynchronen Vorgang?
OLM ist ein asynchroner Vorgang, d.h. der Job für Lebenszyklusregeln wird im Hintergrund mit verschiedenen Nuancen hinter der Implementierung ausgeführt. Beispiel: Zunächst werden nur Objektmetadaten gelöscht, d.h. Objekte, die gerade gelöscht wurden, werden möglicherweise nicht angezeigt. Unterhalb der Haube existieren die tatsächlichen Daten des Objekts jedoch noch in unseren Storage Servern und werden später von unseren internen Garbage Collection Services gelöscht/gelöscht. Aus Sicht des Kunden werden ihnen keine Gebühren berechnet, wenn sie ein Objekt gelöscht haben, aber intern sind die Daten noch in unseren Storage Servern vorhanden, während sie aufgeräumt werden. Das heißt, sie werden nicht für die Speicherplatznutzung belastet, wenn sie die Objekte selbst nicht sehen können (über CLI oder Konsole). Da OLM asynchron ist, können Sie andere Aktionen in Object Storage ausführen, während die Regeln im Hintergrund ausgeführt werden.
-
Wie kann ich den Fortschritt einer OLM-Lebenszyklusregel überwachen?
Derzeit können Sie den Fortschritt einer OLM-Lebenszyklusregel nicht überwachen - OLM-Jobs werden nicht in Arbeitsanforderungen angezeigt. Die Fähigkeit, den Fortschritt der OLM-Regeln zu überwachen, befindet sich in unserer Produktroadmap und ist möglicherweise in Zukunft verfügbar.
-
Ich habe gerade eine Lebenszyklusregel erstellt. Wann wird die Regel tatsächlich beginnen?
Beachten Sie, dass Lebenszyklusregeln nicht sofort gestartet werden. Beispiel: Wenn Sie eine Lebenszyklusregel für Objekte erstellen, die älter als 3 Tage sind und Objekte vorhanden sind, die älter als 3 Tage sind, werden sie nicht sofort gelöscht, wenn die Regel erstellt wird. Die Regel wird erst dann erstellt, wenn sie wirksam wird. Wir können erwarten, dass die Regel innerhalb von 24 Stunden in Kraft tritt (oder zumindest in Kraft tritt).
Welche Methode sollte ich verwenden?
Der Hauptunterschied zwischen den beiden Methoden zum Löschen von Bulk-/Batchobjekten besteht in der Implementierung. Zur Wiederholung wird der Bulk-Löschbefehl der OCI-CLI auf Clientseite synchron implementiert, während OLM auf Serverseite asynchron implementiert ist. Als allgemeine Daumenregel verwenden Sie die folgenden Kriterien, um die zu verwendende Methode zu bestimmen.
Verwenden Sie die CLI im Bulkverfahren, wenn: | OLM global löschen, wenn: |
---|---|
Der Löschvorgang kann synchron erfolgen (weil CLI synchron ist). | Der Löschvorgang muss asynchron erfolgen (da OLM asynchron ist) |
Einmaliger Löschvorgang | Wiederkehrender Löschvorgang, der für immer erfolgen sollte |
Es gibt eine kleine Anzahl von Objekten | Es gibt eine große Anzahl von Objekten |
Das Löschen des Objekts muss sofort erfolgen | Das Löschen des Objekts kann warten (keine kurze Verzögerung) |
Zielsetzung
- Erfahren Sie mehr über die folgenden Methoden, um eine große Anzahl von Objekten aus Object Storage zu löschen:
- Batch-/Massenlöschung über die Oracle Cloud Infrastructure-(OCI-)CLI
- Batch-/Massenlöschung über Object Lifecycle Management (OLM)
Voraussetzungen
- Grundlegende Kenntnisse zu Object Storage finden Sie im Überblick über Object Storage.
- Grundlegende Kenntnisse des Features Object Storage OLM finden Sie unter Object Lifecycle Management verwenden.
- Informationen zur Funktionsweise der OCI-CLI finden Sie unter Befehlszeilenschnittstelle (CLI).
Methode 1: Objekte per Bulk-/Batch über OCI-CLI löschen
Sie können Objekte mit einer der folgenden Methoden per Bulk-Vorgang aus der OCI-CLI löschen.
Objekte im Bulkverfahren innerhalb eines Buckets löschen
Mit der OCI-CLI können Sie Objekte in einem Bucket mit dem folgenden Befehl global löschen:
oci os object bulk-delete -bn <bucket_name>
Hinweis: Wenn Sie den Löschvorgang nicht ausführen möchten, sondern lediglich einen Plan anzeigen möchten, aus dem Objekte gelöscht werden, können Sie die Option --dry-run
verwenden.
oci os object bulk-delete -bn <bucket_name> --dry-run
{
"delete-failures": {},
"deleted-objects": [
"1000_sales.csv",
"rick_and_morty.json"
]
}
Objekte im Bulkverfahren nach Präfix löschen
Sie können das Löschen nur von Objekten angeben, die einem bestimmten Präfix entsprechen, indem Sie die Option --prefix
hinzufügen. Mit dem folgenden Befehl werden alle Objekte gelöscht, die mit dem Präfix <some_prefix>
übereinstimmen.
oci os object bulk-delete -bn <bucket_name> --prefix <some_prefix>
Beispiel: Wenn Sie Objekte löschen möchten, die mit dem Präfix "rick" übereinstimmen, verwenden Sie den folgenden Befehl:
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"
]
}
Objekte im Bulkverfahren nach Muster löschen (Einschluss)
Sie können das Löschen nur von Objekten angeben, die einem bestimmten Muster entsprechen, indem Sie die Option --include
hinzufügen. Mit dem folgenden Befehl werden alle Objekte gelöscht, die dem Muster <some_pattern>
entsprechen.
oci os object bulk-delete -bn <bucket_name> --include <some_pattern>
Beispiel: Wenn Sie nur Objekte mit dem JSON-Dateityp löschen möchten, verwenden Sie den folgenden Befehl:
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"
]
}
Objekte durch inverses Muster (Ausschluss) global löschen
Sie können das Löschen nur von Objekten angeben, die keinem bestimmten Muster entsprechen, indem Sie die Option --exclude
hinzufügen. Mit dem folgenden Befehl werden alle Objekte gelöscht, mit Ausnahme der Objekte, die dem Muster <some_pattern>
entsprechen.
oci os object bulk-delete -bn <bucket_name> --exclude <some_pattern>
Beispiel: Wenn Sie alle Objekte mit Ausnahme der JSON-Dateitypen löschen möchten, verwenden Sie den folgenden Befehl:
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"
]
}
Methode 2: Objekte in Bulk/Batch über OLM löschen
Neben der OCI-CLI können Sie auch das OLM-Feature "Object Lifecycle Management" verwenden, um Objekte global zu löschen. Mit der OLM-Funktion können Sie Lebenszyklusregeln erstellen, die angeben, welche Aktion ausgeführt werden soll, wenn eine bestimmte Bedingung erfüllt ist. Beispiel: Sie können Objekte angeben, die älter als 30 Tage sind, um gelöscht zu werden.
Lebenszyklusregel für Massenlöschungen in der OCI-Konsole/CLI erstellen
Lebenszyklusregeln können über die OCI-Konsole erstellt werden. Dazu klicken Sie in einen Bucket und öffnen die Registerkarte "Lebenszyklus-Policy-Regeln" auf der Seite. Dann wird ein Dialogfeld angezeigt, in dem der Benutzer seine Regel konfigurieren kann.
Lebenszyklusregeln können auch über die OCI-CLI erstellt werden. Der folgende Befehl ist ein Beispiel für das Erstellen einer Lebenszyklusregel mit der OCI-CLI. Die Regel löscht alle Objekte, die älter als 10 Tage sind.
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"
}
]'
Lebenszyklusregel für Massenlöschungen nach Präfix erstellen
In der OCI-Konsole können Sie Objektnamenfilter für Objekte angeben, die basierend auf einer bestimmten Bedingung gelöscht werden. Sie kann Objektnamenspräfixabgleich verarbeiten. Der folgende Screenshot zeigt eine Lebenszyklusregel, mit der alle Objekte mit dem Präfix test/
gelöscht werden.
Wie bei der Konsole kann auch die OCI-CLI angeben, welche Objekte durch Präfixabgleich gelöscht werden sollen.
oci os object-lifecycle-policy put --bucket-name <test_bucket> --items '[
{
...
"objectNameFilter": {
"exclusionPatterns": [],
"inclusionPatterns": [],
"inclusionPrefixes": [
<some_prefix>
]
},
...
}
]'
Beispiel: Mit dem folgenden OCI-CLI-Befehl wird eine Lebenszyklusregel erstellt/aktualisiert, mit der alle Objekte mit dem Präfix test/
gelöscht werden. Denken Sie daran, dass das Argument für die Option –-items
eine gültige JSON-Liste sein muss.
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"
}
]'
Lebenszyklusregel für Massenlöschungen nach Musterabgleich (Inklusionen) erstellen
In der OCI-Konsole können Sie Objektnamenfilter angeben, um Objekte nach Musterabgleich (Einschlüsse) zu löschen. Der folgende Screenshot zeigt eine Lebenszyklusregel, mit der alle Dateitypen .doc
gelöscht werden.
Sie können auch nur Dateien löschen, die einem bestimmten Muster aus der OCI-CLI entsprechen.
oci os object-lifecycle-policy put --bucket-name <bucket_name> --items '[
{
...
"objectNameFilter": {
"exclusionPatterns": [],
"inclusionPatterns": [
<some_pattern>
],
"inclusionPrefixes": []
},
...
}
]'
Beispiel: Mit dem folgenden OCI-CLI-Befehl wird eine Lebenszyklusregel erstellt/aktualisiert, mit der alle .doc
-Dateitypen gelöscht werden.
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"
}
]'
Lebenszyklusregel für Massenlöschungen durch umgekehrten Musterabgleich (Ausschlüsse) erstellen
In der OCI-Konsole können Sie Objektnamensfilter angeben, um Objekte nach inversem Musterabgleich (Ausschluss) zu löschen, d.h. alle Objekte löschen, mit Ausnahme der Objekte, die mit dem Muster übereinstimmen. Der folgende Screenshot zeigt eine Lebenszyklusregel, mit der alle Elemente mit Ausnahme der Dateitypen .txt
gelöscht werden.
Sie können auch alle Dateien löschen, mit Ausnahme der Dateien, die einem bestimmten Muster entsprechen, aus der OCI-CLI.
oci os object-lifecycle-policy put --bucket-name <bucket_name> --items '[
{
...
"objectNameFilter": {
"exclusionPatterns": [
<some_pattern>
],
"inclusionPatterns": [],
"inclusionPrefixes": []
},
...
}
]'
Beispiel: Mit dem folgenden OCI-CLI-Befehl wird eine Lebenszyklusregel erstellt/aktualisiert, mit der alle Objekte mit Ausnahme von TXT-Dateitypen gelöscht werden.
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"
}
]'
Verwandte Links
Danksagungen
- Autor - Raymond Lin (Software Engineer)
Weitere Lernressourcen
Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie auf weitere Inhalte zu kostenlosen Lernangeboten im Oracle Learning YouTube-Kanal zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.
Produktdokumentation finden Sie unter Oracle Help Center.
Delete objects in bulk/batch from Object Storage
F74479-01
November 2022
Copyright © 2022, Oracle and/or its affiliates.