In dieser Anleitung wird erläutert, wie Sie mit einschließenden und ausschließenden Präfixen steuern, welche Dateien übertragen werden.
Übersicht
Mit dem Storage Transfer Service können Sie Daten aus Amazon S3-, Microsoft Azure Blob Storage- und Cloud Storage-Quellen mithilfe von Präfixen filtern. Ein Präfix ist eine Zeichenfolge am Anfang eines Pfads, die eine Gruppe von Objekten angibt.
Sie können Präfixfilter auf drei Arten verwenden:
Einschließende Präfixe: Es werden nur Objekte übertragen, die mit den angegebenen Präfixen übereinstimmen.
Ausschließende Präfixe: Objekte, die mit den angegebenen Präfixen übereinstimmen, werden bei der Übertragung ausgelassen.
Beide zusammen: Sie können einschließende und ausschließende Präfixe gleichzeitig verwenden, um eine genauere Steuerung zu ermöglichen. Wenn sie zusammen verwendet werden, muss jedes ausschließende Präfix mit einem der angegebenen einschließenden Präfixe beginnen.
Wenn Sie keine Präfixe angeben, werden alle Objekte im Quell-Bucket übertragen.
Regeln
Für Präfixe gelten die folgenden Regeln:
Keine führenden Schrägstriche: Lassen Sie bei der Eingabe eines Präfixes den Schrägstrich am Anfang weg. Für den Pfad
s3://my-bucket/logs/2025/requests.gz, ist das richtige Präfixlogs/2025/requests.gz.Teilweise Übereinstimmungen: Präfixe funktionieren durch teilweise Übereinstimmung. Das Präfix
pathstimmt beispielsweise sowohl mitpath_1/als auch mitpath_2/überein.Keine Platzhalter: Platzhalter werden nicht unterstützt.
Relativ zum Quellordner: Wenn die Übertragungsquelle ein bestimmter Ordner ist, werden Präfixe relativ zu diesem Ordner ausgewertet. Bei einer Quelle von
gs://my-bucket/data/stimmt ein einschließendes Präfix vonreportsmit allen Dateien untergs://my-bucket/data/reportsüberein.Unterschiedliche einschließende Präfixe: Jedes einschließende Präfix muss einen eindeutigen Teil des Objekt-Namespace definieren. Sie können kein einschließendes Präfix verwenden, das bereits von einem anderen einschließenden Präfix abgedeckt wird. Sie können beispielsweise nicht sowohl
data/als auchdata/reports/als einschließende Präfixe angeben.Abhängigkeit von ausschließenden Präfixen: Wenn Sie einschließende und ausschließende Präfixe zusammen verwenden, muss jedes ausschließende Präfix mit einem der angegebenen einschließenden Präfixe beginnen. Wenn
pathbeispielsweise ein einschließendes Präfix ist, können gültige ausschließende Präfixepath/boderpathwaysein. Diese Regel gilt nicht, wenn Sie nur ausschließende Präfixe verwenden.Maximal 1.000 Präfixe: Ein einzelner Übertragungsjob unterstützt bis zu 1.000 Präfixe. Sie können eine Übertragung in mehrere Jobs aufteilen, wenn zusätzliche Präfixe erforderlich sind.
Allgemeine Informationen zu Präfixen finden Sie in der Amazon S3-Dokumentation unter Hierarchische Auflistung von Schlüsseln mit einem Präfix und einem Trennzeichen oder in der Objektlistemethode für Cloud Storage.
Präfixe angeben
Cloud Console
Wenn Sie einschließende und ausschließende Präfixe mit der Cloud Console angeben möchten, geben Sie die Werte beim Erstellen einer neuen Übertragung oder beim Aktualisieren einer vorhandenen Übertragung ein.
gcloud CLI
Wenn Sie einschließende und ausschließende Präfixe mit der gcloud CLI angeben möchten, übergeben Sie die
--include-prefixes und --exclude-prefixes Flags an den
gcloud transfer jobs create Befehl oder den gcloud transfer jobs update
Befehl:
gcloud transfer jobs create SOURCE DESTINATION \
--include-prefixes="path_1/,path_2/" --exclude-prefixes="path_1/subpath_2/"
Trennen Sie mehrere Präfixe durch Kommas und lassen Sie nach den Kommas keine Leerzeichen.
Beispiel: --include-prefixes="foo,bar".
REST
Wenn Sie einschließende und ausschließende Präfixe mit der REST API angeben möchten, verwenden Sie die Felder includePrefixes[] und excludePrefixes[]:
{
"description": "YOUR DESCRIPTION",
"status": "ENABLED",
"projectId": "PROJECT_ID",
"schedule": {
"scheduleStartDate": {
"day": 1,
"month": 1,
"year": 2015
},
"startTimeOfDay": {
"hours": 1,
"minutes": 1
}
},
"transferSpec": {
"gcsDataSource": {
"bucketName": "GCS_SOURCE_NAME"
},
"gcsDataSink": {
"bucketName": "GCS_SINK_NAME"
},
"transferOptions": {
"deleteObjectsFromSourceAfterTransfer": true
},
"objectConditions": {
"includePrefixes": [
"path_1/",
"path_2/"
],
"excludePrefixes": [
"path_1/subpath_2/object_5"
]
}
}
}
Weitere Informationen finden Sie in der ObjectConditions Referenz.
Beispielobjekte und -pfade
In den folgenden Beispielen wird diese Beispielliste von Objekten verwendet:
xx://bucketname/object_1
xx://bucketname/object_2
xx://bucketname/path_1/object_3
xx://bucketname/path_1/subpath_1/object_4
xx://bucketname/path_1/subpath_2/object_5
xx://bucketname/path_2/object_6
xx://bucketname/path_2/subpath_3/object_7
xx://bucketname/path_2/subpath_4/object_8
Einschließende Präfixe verwenden
Wenn Sie nur Objekte unter path_1/ übertragen möchten, verwenden Sie das folgende Präfix:
path_1/
Dies schließt Objekte unter path_1/ ein. Die folgenden Objekte sind in der Übertragung enthalten:
xx://bucketname/object_1xx://bucketname/object_2xx://bucketname/path_1/object_3 xx://bucketname/path_1/subpath_1/object_4 xx://bucketname/path_1/subpath_2/object_5xx://bucketname/path_2/object_6xx://bucketname/path_2/subpath_3/object_7xx://bucketname/path_2/subpath_4/object_8
Sie können mehrere Pfade angeben, die eingeschlossen werden sollen. Sie können beispielsweise Folgendes übergeben:
path_1/subpath_2/ path_2/subpath_3/
In diesem Fall umfasst die Übertragung die folgenden Objekte:
xx://bucketname/object_1xx://bucketname/object_2xx://bucketname/path_1/object_3xx://bucketname/path_1/subpath_1/object_4xx://bucketname/path_1/subpath_2/object_5xx://bucketname/path_2/object_6xx://bucketname/path_2/subpath_3/object_7xx://bucketname/path_2/subpath_4/object_8
Teilweise Übereinstimmungen werden unterstützt. Beispiel:
path
Die folgenden Objekte werden übertragen:
xx://bucketname/object_1xx://bucketname/object_2xx://bucketname/path_1/object_3 xx://bucketname/path_1/subpath_1/object_4 xx://bucketname/path_1/subpath_2/object_5 xx://bucketname/path_2/object_6 xx://bucketname/path_2/subpath_3/object_7 xx://bucketname/path_2/subpath_4/object_8
Wenn Sie einschließende Präfixe verwenden, werden Pfade, die Sie nicht explizit einschließen, nicht in den Cloud Storage-Ziel-Bucket übertragen.
Ausschließende Präfixe
Wenn Sie beim Erstellen einer Übertragung ausschließende Präfixe verwenden, wird der Storage Transfer Service angewiesen, die aufgeführten Pfade für die Übertragung zu ignorieren.
Wenn Sie Objekte unter path_1/ ausschließen möchten, übergeben Sie das folgende Präfix:
path_1/
Dies schließt Objekte unter path_1/ aus. In diesem Fall umfasst die Übertragung die folgenden Objekte:
xx://bucketname/object_1 xx://bucketname/object_2xx://bucketname/path_1/object_3xx://bucketname/path_1/subpath_1/object_4xx://bucketname/path_1/subpath_2/object_5xx://bucketname/path_2/object_6 xx://bucketname/path_2/subpath_3/object_7 xx://bucketname/path_2/subpath_4/object_8
Sie können mehrere Pfade angeben, die ausgeschlossen werden sollen. Sie können beispielsweise Folgendes übergeben:
path_1/subpath_2/
path_2/subpath_3/
In diesem Fall umfasst die Übertragung die folgenden Objekte:
xx://bucketname/object_1 xx://bucketname/object_2 xx://bucketname/path_1/object_3 xx://bucketname/path_1/subpath_1/object_4xx://bucketname/path_1/subpath_2/object_5xx://bucketname/path_2/object_6xx://bucketname/path_2/subpath_3/object_7xx://bucketname/path_2/subpath_4/object_8
Gleichzeitig Pfade ein- und ausschließen
Sie können ein ausschließendes und ein einschließendes Präfix zusammen verwenden. In diesem Fall begrenzt das ausschließende Präfix, was das einschließende Präfix in die Übertragung einschließt.
Wenn Sie beide Arten von Präfixen angeben, muss jedes ausschließende Präfix mit einem Pfad beginnen, der in einem einschließenden Präfix angegeben ist.
Wenn Sie beispielsweise Objekte unter path_1/ einschließen und Objekte unter
subpath_1/ ausschließen möchten, übergeben Sie Folgendes:
include: path_1/
exclude: path_1/subpath_1/
In diesem Fall umfasst die Übertragung die folgenden Objekte:
xx://bucketname/object_1xx://bucketname/object_2xx://bucketname/path_1/object_3xx://bucketname/path_1/subpath_1/object_4xx://bucketname/path_1/subpath_2/object_5xx://bucketname/path_2/object_6xx://bucketname/path_2/subpath_3/object_7xx://bucketname/path_2/subpath_4/object_8
Wenn Sie alle Objekte unter path_1/ und path_2/ einschließen möchten, außer Elemente in path_1/subpath_1/ oder path_2/subpath_3/, übergeben Sie Folgendes:
include: path_1/
path_2/
exclude: path_1/subpath_1/
path_2/subpath_3/
In diesem Fall umfasst die Übertragung die folgenden Objekte:
xx://bucketname/object_1xx://bucketname/object_2xx://bucketname/path_1/object_3xx://bucketname/path_1/subpath_1/object_4xx://bucketname/path_1/subpath_2/object_5 xx://bucketname/path_2/object_6xx://bucketname/path_2/subpath_3/object_7xx://bucketname/path_2/subpath_4/object_8
Zu vermeidende häufige Fehler
Hier sind Beispiele für falsche Konfigurationen und wie Sie sie beheben können.
Pfad einschließen, der in einem anderen einschließenden Präfix verwendet wird
Ein einschließendes Präfix darf kein Unterverzeichnis eines anderen einschließenden Präfixes sein.
Falsch: Das Präfix `path_1/subpath_1` wird bereits von `path_1/` abgedeckt.
include: path_1/
path_1/subpath_1
Richtig: Entfernen Sie das redundante, spezifischere Präfix, um das Problem zu beheben.
include: path_1/
Das ausschließende Präfix stimmt nicht mit einem einschließenden Präfix überein
Wenn sie zusammen verwendet werden, muss ein ausschließendes Präfix mit einem der einschließenden Präfixe beginnen.
Falsch: Das Präfix `subpath_1` beginnt weder mit path_1/ noch mit
path_2/.
include: path_1/
path_2/
exclude: subpath_1
Richtig: Das ausschließende Präfix muss den vollständigen Pfad aus einem einschließenden Präfix enthalten.
include: path_1/
path_2/
exclude: path_1/subpath_1/