Filtrare gli oggetti origine utilizzando i caratteri jolly

I job Storage Transfer Service supportano stringhe di ricerca con caratteri jolly come * e ? per trovare corrispondenze con nomi o percorsi di file. Queste stringhe di ricerca sono chiamate pattern glob.

Puoi utilizzare i pattern glob per specificare gli oggetti di origine da includere in un trasferimento. Ciò consente un controllo più granulare rispetto al filtraggio in base al solo prefisso.

Il filtro con pattern glob è supportato per i trasferimenti da AWS S3 e Azure.

Sintassi glob

Un pattern glob utilizza la seguente sintassi per trovare corrispondenze con i percorsi degli oggetti:

Sintassi Descrizione
? Corrisponde a qualsiasi singolo carattere, escluso /.
* Corrisponde a zero o più caratteri, escluso /.
** Corrisponde a zero o più caratteri, incluso /.
[abc] Corrisponde esattamente a uno dei caratteri (ad es. a, b o c).
[a-z] Corrisponde esattamente a un carattere nell'intervallo inclusivo (ad es. da a a z).
[!abc] o [^abc] Corrisponde esattamente a un carattere che non è a, b o c.
{abc,xyz} Corrisponde a una delle stringhe (ad es. abc o xyz). Non può contenere barre (/) o doppi asterischi (**).
\? Corrisponde al carattere letterale dopo la barra rovesciata (ad es. \? corrisponde a ? letterale).

Pattern di esempio

Corrispondenza di tutti i file .log delle directory december:

logs_by_year/**/december/*.log

Trasferisci tutti i file nella directory data_analytics/ che non iniziano con un . (punto) o un _ (trattino basso):

data_analytics/[!._]*

Per rendere ricorsivo l'esempio precedente:

data_analytics/**/[!._]*

Trasferisci tutti i file PDF da esattamente due directory specifiche:

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

Specifica un pattern glob

Puoi specificare un pattern glob durante la creazione o l'aggiornamento di un job di trasferimento.

gcloud CLI

Per filtrare in base al pattern glob utilizzando la CLI gcloud, passa il flag --match-glob al comando gcloud transfer jobs create o gcloud transfer jobs update:

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

Esempio:

Il comando seguente crea un job che trasferisce solo i file .log dalle directory december:

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

REST

Per filtrare in base al pattern glob utilizzando l'API REST, specifica il campo matchGlob nel objectConditions del transferSpec.

{
  "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"
    }
  }
}

Per saperne di più, consulta il riferimento ObjectConditions.

Console Google Cloud

Il filtro per pattern glob non è supportato nella console Google Cloud.

Interazione con altri filtri

Quando utilizzi un filtro con pattern glob con filtri per prefisso o filtri per l'ora dell'ultima modifica, Storage Transfer Service applica i filtri nel seguente ordine:

  1. Includi prefissi: limita gli oggetti da prendere in considerazione.

  2. Condizioni oggetto (pattern glob e ora dell'ultima modifica): filtra gli oggetti che corrispondono al prefisso di inclusione. Un oggetto deve corrispondere sia al filtro glob che al filtro dell'ora dell'ultima modifica per essere incluso nel risultato.

  3. Escludi prefissi: rimuove gli oggetti dal risultato.

Scopri di più su filtri per prefisso e filtri per ora ultima modifica.

Includi prefissi

Il pattern glob viene applicato solo agli oggetti che corrispondono ad almeno un prefisso di inclusione.

Storage Transfer Service restituisce un errore se il pattern glob contraddice tutti i pattern del prefisso di inclusione.

Esempio: combinazione valida

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

Risultato: valido. Il servizio elenca prima gli oggetti in foo/ e poi applica il pattern glob a questo elenco.

Esempio: combinazione valida

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

Risultato: valido. Il servizio elenca tutti gli oggetti nelle directory 2024 e 2025 e poi trasferisce solo i file che terminano con .json.

Esempio: contraddizione

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

Risultato: errore. Il pattern match_glob non può corrispondere a nessun oggetto selezionato da include_prefix.

Escludi prefissi

Il filtro del prefisso di esclusione viene applicato dopo il filtro del prefisso di inclusione e il filtro del pattern glob.

Non viene eseguito alcun controllo di contraddizione. Qualsiasi oggetto che corrisponde a un prefisso di esclusione viene rimosso dall'elenco di trasferimento, anche se corrispondeva al pattern glob.

Esempio

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

Risultato: il servizio trasferisce tutti gli oggetti in logs/ che terminano con .log, ad eccezione di quelli nella directory logs/temp/.