Nach Präfix filtern

Auf dieser Seite wird beschrieben, wie Sie Pfade mithilfe von ein- und auszuschließenden Präfixen bei Übertragungen ein- und ausschließen.

Informationen zum Erstellen eines Manifests für bestimmte Objekte, die übertragen werden sollen, finden Sie unter Bestimmte Dateien oder Objekte mit einem Manifest übertragen.

Überblick

Storage Transfer Service unterstützt die Verwendung von Präfixen zur Auswahl der Dateien, die in die Datenquelle aufgenommen oder von ihr ausgeschlossen werden sollen. Sie können einschließende Präfixe, ausschließende Präfixe oder beides zusammen verwenden.

Das Filtern nach Präfix wird für Amazon S3-, Microsoft Azure Blob Storage- und Cloud Storage-Datenquellen unterstützt.

  • Lassen Sie bei der Eingabe eines Präfixes den Schrägstrich am Anfang weg. Wenn Sie beispielsweise das Objekt requests.gz in eine Übertragung aus dem Bucket-Pfad s3://my-aws-bucket/logs/y=2015/requests.gz aufnehmen möchten, geben Sie das einschließende Präfix als logs/y=2015/requests.gz an.

  • Teilübereinstimmungen werden für einschließende und ausschließende Präfixe unterstützt. Beispiel: path stimmt mit path_1/ und path_2/ überein.

  • Platzhalter werden nicht unterstützt.

  • Wenn Sie einen Ordner als Quellspeicherort angegeben haben, beziehen sich Präfixfilter auf diesen Ordner. Wenn die Quelle beispielsweise gs://my-test-bucket/path/ ist, umfasst der Einschließen-Filter file alle Dateien, die mit gs://my-test-bucket/path/file beginnen.

  • Jedes einschließende Präfix muss einen eindeutigen Teil des Objekt-Namespace enthalten. Kein einschließendes Präfix darf ein Präfix eines anderen einschließenden Präfixes sein. Beispielsweise können Sie nicht sowohl path_1 als auch path_1/subpath_2 als einschließende Präfixe angeben.

  • Wenn Sie einschließende und ausschließende Präfixe zusammen verwenden, müssen die ausschließenden Präfixe mit dem Wert eines der einschließenden Präfixe beginnen. Beispiel: Wenn Sie a als einschließendes Präfix festlegen, können die ausschließenden Präfixe z. B. a/b, aaa oder abc lauten.

  • Wenn Sie nur ausschließende Präfixe verwenden, gibt es keine Einschränkungen im Hinblick auf die Präfixe, die Sie verwenden können.

  • Wenn Sie keine Präfixe angeben, werden alle Objekte übertragen, die sich im Bucket befinden.

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 Präfixe über die Cloud Console angeben oder ausschließen 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-Befehlszeile angeben möchten, übergeben Sie die Flags --include-prefixes und --exclude-prefixes an den Befehl gcloud transfer jobs create oder gcloud transfer jobs update:

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 die Leerzeichen nach den Kommas aus. Beispiel: --include-prefixes=foo,bar.

REST

Verwenden Sie die Felder includePrefixes[] und excludePrefixes[], um einzuschließende und ausgeschlossene Präfixe mithilfe der REST API anzugeben:

{
    "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 Referenz zu ObjectConditions.

Beispielobjekte und -pfade

In den Beispielen in diesem Dokument werden die folgenden Beispielobjekte und -pfade verwendet:

xx://bucketname/object_1
xx://bucketname/object_2
xx://bucketname/path_1/object_3
xx://bucketname/path_2/object_4
xx://bucketname/path_1/subpath_1/object_5
xx://bucketname/path_1/subpath_2/object_6
xx://bucketname/path_2/subpath_3/object_7
xx://bucketname/path_2/subpath_4/object_8

Präfixe einschließen

Verwenden Sie beim Erstellen einer Übertragung die „Einschließen“-Präfixe, um den Storage Transfer Service anzuweisen, Objekte in den aufgeführten Pfaden für die Übertragung zu berücksichtigen und Objekte, die sich nicht unter diesen Pfaden befinden, zu ignorieren.

Wenn Sie beispielsweise Objekte unter path_1/ einschließen möchten, verwenden Sie das folgende Präfix:

path_1/

Dies gilt auch für Objekte direkt unter path_1/, path_1/subpath_1 und path_1/subpath_2/. Die folgenden Objekte sind in der Übertragung enthalten:

xx://bucketname/object_1
xx://bucketname/object_2
xx://bucketname/path_1/object_3
xx://bucketname/path_2/object_4
xx://bucketname/path_1/subpath_1/object_5
xx://bucketname/path_1/subpath_2/object_6
xx://bucketname/path_2/subpath_3/object_7
xx://bucketname/path_2/subpath_4/object_8

Sie können mehrere einzuschließende Pfade angeben. Sie können beispielsweise Folgendes übergeben:

path_1/subpath_2/
path_1/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_2/object_4
xx://bucketname/path_1/subpath_1/object_5
xx://bucketname/path_1/subpath_2/object_6
xx://bucketname/path_2/subpath_3/object_7
xx://bucketname/path_2/subpath_4/object_8

Teilübereinstimmungen werden unterstützt. Wenn Sie beispielsweise path als Wert eines einschließenden Präfixes angeben, entspricht dies den folgenden Objekten:

xx://bucketname/object_1
xx://bucketname/object_2
xx://bucketname/path_1/object_3
xx://bucketname/path_2/object_4
xx://bucketname/path_1/subpath_1/object_5
xx://bucketname/path_1/subpath_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 ausdrücklich einschließen, nicht in den Cloud Storage-Ziel-Bucket übertragen.

Präfixe ausschließen

Wenn Sie beim Erstellen einer Übertragung Präfixe verwenden, wird Storage Transfer Service angewiesen, die aufgeführten Pfade für die Übertragung zu ignorieren.

Übergeben Sie das folgende Präfix, um Objekte unter path_1/ auszuschließen:

path_1/

Dies schließt Objekte unter path_1/, path_1/subpath_1/ und path_1/subpath_2/ aus. In diesem Fall sind die folgenden Objekte in der Übertragung enthalten:

xx://bucketname/object_1
xx://bucketname/object_2
xx://bucketname/path_1/object_3
xx://bucketname/path_2/object_4
xx://bucketname/path_1/subpath_1/object_5
xx://bucketname/path_1/subpath_2/object_6
xx://bucketname/path_2/subpath_3/object_7
xx://bucketname/path_2/subpath_4/object_8

Sie können mehrere auszuschließenden Pfade angeben. 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_2/object_4
xx://bucketname/path_1/subpath_1/object_5
xx://bucketname/path_1/subpath_2/object_6
xx://bucketname/path_2/subpath_3/object_7
xx://bucketname/path_2/subpath_4/object_8

Gleichzeitig Pfade ein- und ausschließen

Sie können ein „Ausschließen“-Präfix und ein „Einschließen“-Präfix zusammen anwenden. In diesem Fall schränkt das „Ausschließen“-Präfix ein, was das einschließende Präfix bei der Übertragung einschließt.

Wenn Sie beide Präfixtypen angeben, muss jedes ausgeschlossene 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_1
xx://bucketname/object_2
xx://bucketname/path_1/object_3
xx://bucketname/path_2/object_4
xx://bucketname/path_1/subpath_1/object_5
xx://bucketname/path_1/subpath_2/object_6
xx://bucketname/path_2/subpath_3/object_7
xx://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_1
xx://bucketname/object_2
xx://bucketname/path_1/object_3
xx://bucketname/path_2/object_4
xx://bucketname/path_1/subpath_1/object_5
xx://bucketname/path_1/subpath_2/object_6
xx://bucketname/path_2/subpath_3/object_7
xx://bucketname/path_2/subpath_4/object_8

Beispiele für falsches Einschließen oder Ausschließen von Pfaden

In den folgenden Abschnitten wird anhand von Beispielen beschrieben, wie Sie Pfade nicht ein- oder ausschließen sollten, und was Sie sie korrigieren müssen, damit die Beispiele ordnungsgemäß funktionieren.

Einen Pfad einschließen, der in einem anderen „Einschließen“-Präfix verwendet wird

Jedes einschließende Präfix sollte einen eindeutigen Teil des Objekt-Namespace angeben. Das folgende Beispiel ist falsch, da der zweite Wert bereits im Namespace des ersten Werts enthalten ist:

include: path_1/
         path_1/subpath_1

In diesem Beispiel sind die Werte für das einschließende Präfix ungültig, da das zweite einschließende Präfix (path_1/subpath_1) bereits in path_1/ enthalten ist. Entfernen Sie einen der Werte, um das Problem zu beheben.

Ein Ausschlusspräfix verwenden, das nicht mit einem Einschlusspräfix beginnt

Jedes ausschließende Präfix muss mit einem der angegebenen Werte vom Typ „Einschließen“ beginnen. Das folgende Beispiel ist falsch, da die auszuschließenden Präfixwerte nicht mit den angegebenen einschließenden Präfixwerten beginnen:

include: path_1/
         path_2/
exclude: subpath_1
         subpath_4

In diesem Beispiel sind die auszuschließenden Präfixwerte ungültig, da sie nicht mit einem der einschließenden Präfixwerte beginnen. Um dieses Problem zu beheben, müssen Sie dafür sorgen, dass das Ausschlusspräfix einen vollständigen Pfad enthält, der als einschließendes Präfix aufgeführt ist:

include: path_1/
         path_2/
exclude: path_1/subpath_1/
         path_2/subpath_4/

Nächste Schritte

  • Weitere Informationen zum Übertragen einer bestimmten Liste von Dateien oder Objekten finden Sie hier.