Quellobjekte mithilfe von Platzhaltern filtern

Storage Transfer Service-Jobs unterstützen Suchstrings mit Platzhalterzeichen wie * und ?, um Dateinamen oder Pfade abzugleichen. Diese Suchstrings werden als Glob-Muster bezeichnet.

Mit Glob-Mustern können Sie angeben, welche Quellobjekte in eine Übertragung einbezogen werden sollen. Dies ermöglicht eine detailliertere Steuerung als das alleinige Filtern nach Präfix.

Das Filtern mit Glob-Mustern wird für Übertragungen von AWS S3 und Azure unterstützt.

Glob-Syntax

Ein Glob-Muster verwendet die folgende Syntax, um Objektpfade abzugleichen:

Syntax Beschreibung
? Stimmt mit einem beliebigen einzelnen Zeichen überein, mit Ausnahme von /.
* Entspricht null oder mehr Zeichen, mit Ausnahme von /.
** Entspricht null oder mehr Zeichen, einschließlich /.
[abc] Entspricht genau einem der Zeichen (z.B. a, b oder c).
[a-z] Entspricht genau einem Zeichen im inklusiven Bereich (z.B. a bis z).
[!abc] oder [^abc] Entspricht genau einem Zeichen, das nicht a, b oder c ist.
{abc,xyz} Entspricht einem der Strings (z.B. abc oder xyz). Darf keine Schrägstriche (/) oder doppelten Sternchen (**) enthalten.
\? Entspricht dem Literalzeichen nach dem Backslash (z.B. \? entspricht einem Literalzeichen ?).

Beispielmuster

Alle .log-Dateien aus december-Verzeichnissen abgleichen:

logs_by_year/**/december/*.log

Alle Dateien im Verzeichnis data_analytics/ übertragen, die nicht mit einem . (Punkt) oder _ (Unterstrich) beginnen:

data_analytics/[!._]*

So machen Sie das vorherige Beispiel rekursiv:

data_analytics/**/[!._]*

Alle PDF-Dateien aus genau zwei bestimmten Verzeichnissen übertragen:

quarterly_reports/2025/{q1-final,q4-final}/*.pdf

Glob-Muster angeben

Sie können beim Erstellen oder Aktualisieren eines Übertragungsjobs ein Glob-Muster angeben.

gcloud-CLI

Wenn Sie mit der gcloud-CLI nach einem Glob-Muster filtern möchten, übergeben Sie das Flag --match-glob an den Befehl gcloud transfer jobs create oder gcloud transfer jobs update:

gcloud transfer jobs create SOURCE DESTINATION \
  --match-glob="GLOB_PATTERN"

Beispiel:

Mit dem folgenden Befehl wird ein Job erstellt, der nur .log-Dateien aus december-Verzeichnissen überträgt:

gcloud transfer jobs create s3://my-source-bucket gs://my-sink-bucket \
  --match-glob="logs_by_year/**/december/*.log"

REST

Wenn Sie mit der REST API nach einem Glob-Muster filtern möchten, geben Sie das Feld matchGlob im objectConditions Ihres transferSpec an.

{
  "description": "Transfer December logs from all years",
  "status": "ENABLED",
  "projectId": "PROJECT_ID",
  "transferSpec": {
    "awsS3DataSource": {
      "bucketName": "AWS_SOURCE_NAME",
      "awsAccessKey": {
        "accessKeyId": "AWS_ACCESS_KEY_ID",
        "secretAccessKey": "AWS_SECRET_ACCESS_KEY"
      }
    },
    "gcsDataSink": {
      "bucketName": "DESTINATION_BUCKET"
    },
    "objectConditions": {
      "matchGlob": "logs_by_year/**/december/*.log"
    }
  }
}

Weitere Informationen finden Sie in der Referenz zu ObjectConditions.

Google Cloud Console

Das Filtern nach Glob-Mustern wird in der Google Cloud Console nicht unterstützt.

Interaktion mit anderen Filtern

Wenn Sie einen Glob-Musterfilter mit Präfixfiltern oder Filtern für die letzte Änderungszeit verwenden, wendet Storage Transfer Service die Filter in der folgenden Reihenfolge an:

  1. Präfixe einschließen: Schränkt die zu berücksichtigenden Objekte ein.

  2. Objektbedingungen (Glob-Muster und Änderungszeit): Filtert die Objekte, die mit dem Include-Präfix übereinstimmen. Ein Objekt muss sowohl dem Glob-Filter als auch dem Filter für die Uhrzeit der letzten Änderung entsprechen, damit es im Ergebnis enthalten ist.

  3. Präfixe ausschließen: Entfernt Objekte aus dem Ergebnis.

Weitere Informationen zum Filtern nach Präfix und zum Filtern nach Uhrzeit der letzten Änderung

Präfixe einschließen

Das Glob-Muster wird nur auf Objekte angewendet, die mit mindestens einem Include-Präfix übereinstimmen.

Der Storage Transfer Service gibt einen Fehler zurück, wenn Ihr Glob-Muster allen Präfixmustern für die Einbeziehung widerspricht.

Beispiel: Gültige Kombination

  • include_prefix: ["foo/"]
  • match_glob: "foo/bar/**"

Ergebnis:Gültig. Der Dienst listet zuerst Objekte unter foo/ auf und wendet dann das Glob-Muster auf diese Liste an.

Beispiel: Gültige Kombination

  • include_prefix: ["logs/2024/", "logs/2025/"]
  • match_glob: "**/*.json"

Ergebnis:Gültig. Der Dienst listet alle Objekte in den Verzeichnissen 2024 und 2025 auf und überträgt dann nur die Dateien, die mit .json enden.

Beispiel: Widerspruch

  • include_prefix: ["foo/"]
  • match_glob: "bar/**"

Ergebnis:Fehler. Das Muster match_glob kann nicht mit Objekten übereinstimmen, die von include_prefix ausgewählt wurden.

Präfixe ausschließen

Der Filter für das Ausschlusspräfix wird nach dem Filter für das Einschlusspräfix und dem Filter für das Glob-Muster angewendet.

Es wird keine Widerspruchsprüfung durchgeführt. Alle Objekte, die mit einem Ausschlusspräfix übereinstimmen, werden aus der Übertragungsliste entfernt, auch wenn sie mit dem Glob-Muster übereinstimmen.

Beispiel

  • include_prefix: ["logs/"]
  • match_glob: "**/*.log"
  • exclude_prefix: ["logs/temp/"]

Ergebnis:Der Dienst überträgt alle Objekte unter logs/, die mit .log enden, mit Ausnahme der Objekte im Verzeichnis logs/temp/.