Filtra per prefisso

Questa pagina mostra come includere ed escludere i percorsi dai trasferimenti utilizzando i prefissi di inclusione ed esclusione.

Per informazioni su come creare un manifest di oggetti specifici da trasferire, consulta Trasferire file o oggetti specifici utilizzando un manifest.

Panoramica

Storage Transfer Service supporta l'uso di prefissi per selezionare i file da includere o escludere dall'origine dati. Puoi utilizzare i prefissi di inclusione o di esclusione oppure entrambi contemporaneamente.

Il filtro per prefisso è supportato per le origini dati Amazon S3, BLOB di archiviazione di Microsoft Azure e Cloud Storage.

  • Non includere la barra iniziale in un prefisso. Ad esempio, per includere l'oggetto requests.gz in un trasferimento dal seguente percorso del bucket s3://my-aws-bucket/logs/y=2015/requests.gz, specifica il prefisso di inclusione come logs/y=2015/requests.gz.

  • Le corrispondenze parziali sono supportate per includere i prefissi di inclusione ed esclusione. Ad esempio, path corrisponde a path_1/ e path_2/.

  • I caratteri jolly non sono supportati.

  • Ogni prefisso di inclusione deve includere una parte distinta dello spazio dei nomi dell'oggetto. Nessun prefisso di inclusione può essere un prefisso di un altro. Ad esempio, non puoi specificare sia path_1 sia path_1/subpath_2 come prefisso di inclusione.

  • Se utilizzi prefissi di esclusione ed esegui l'esclusione di prefissi, i prefissi di esclusione devono iniziare con il valore di uno dei prefissi di inclusione. Ad esempio, se specifichi a come prefisso di inclusione, i prefissi di esclusione validi sono a/b, aaa e abc.

  • Se utilizzi solo i prefissi da escludere, non ci saranno limitazioni sui prefissi che puoi usare.

  • Se non specifichi prefissi, tutti gli oggetti nel bucket vengono trasferiti.

  • Quando utilizzi i prefissi, non fornire un nome di percorso per i nomi di bucket dell'origine dati o del sink. Ad esempio, i valori s3://my-aws-bucket e gs://example-bucket sono validi, mentre s3://my-aws-bucket/subfolder o gs://example-bucket/files no. Per includere i percorsi, utilizza i prefissi di inclusione ed esclusione.

Per informazioni più generali sui prefissi, consulta la sezione Elencare le chiavi in modo gerarchico con un prefisso e un delimitatore nella documentazione di Amazon S3 o consultare il metodo di elenco degli oggetti per Cloud Storage.

Come specificare i prefissi

Console Google Cloud

Per specificare i prefissi di inclusione ed esclusione tramite Cloud Console, inserisci i valori durante la creazione di un nuovo trasferimento o quando aggiorna un trasferimento esistente.

Interfaccia a riga di comando gcloud

Per specificare i prefissi di inclusione ed esclusione utilizzando l'interfaccia a riga di comando gcloud, passa i flag --include-prefixes e --exclude-prefixes al comando gcloud transfer jobs create o al comando gcloud transfer jobs update:

gcloud transfer jobs create SOURCE DESTINATION \
  --include-prefixes="path_1/,path_2/" --exclude-prefixes="path_1/subpath_2/"

Separa più prefissi con virgole, omettendo spazi dopo le virgole. Ad esempio: --include-prefixes=foo,bar.

REST

Per specificare i prefissi di inclusione ed esclusione tramite l'API REST, utilizza i campi includePrefixes[] e 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"
            ]
        }
    }
}

Per saperne di più, consulta il riferimento ObjectConditions.

Oggetti e percorsi di esempio

Gli esempi in questo documento utilizzano i seguenti oggetti e percorsi di esempio:

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

Includi prefissi

Utilizza i prefissi quando crei un trasferimento per indicare a Storage Transfer Service di considerare gli oggetti nei percorsi elencati per il trasferimento e di ignorare gli oggetti al di fuori di tali percorsi.

Ad esempio, per includere oggetti in path_1/, utilizza il prefisso seguente:

path_1/

Sono inclusi oggetti direttamente sotto path_1/, path_1/subpath_1 e path_1/subpath_2/. Nel trasferimento vengono inclusi i seguenti oggetti:

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

Puoi specificare più percorsi da includere. Ad esempio, puoi trasmettere quanto segue:

path_1/subpath_2/
path_1/subpath_3/

In questo caso, il trasferimento include i seguenti oggetti:

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

Le corrispondenze parziali sono supportate. Ad esempio, specificare path come valore di un prefisso include i seguenti oggetti:

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

Quando utilizzi i prefissi, i percorsi che non includi specificamente non vengono trasferiti al bucket di destinazione Cloud Storage.

Escludi prefissi

L'utilizzo dei prefissi di esclusione quando si crea un trasferimento indica a Storage Transfer Service di ignorare i percorsi elencati per il trasferimento.

Per escludere oggetti in path_1/, passa il seguente prefisso:

path_1/

Sono esclusi gli oggetti in path_1/, path_1/subpath_1/ e path_1/subpath_2/. In questo caso, il trasferimento include i seguenti oggetti:

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

Puoi specificare più percorsi da escludere. Ad esempio, puoi trasmettere quanto segue:

path_1/subpath_2/
path_2/subpath_3/

In questo caso, il trasferimento include i seguenti oggetti:

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

Inclusione ed esclusione di percorsi contemporaneamente

Puoi applicare un prefisso di esclusione e un prefisso di inclusione insieme, nel qual caso il prefisso di esclusione limita ciò che il prefisso di inclusione include nel trasferimento.

Quando specifichi entrambi i tipi di prefisso, ogni prefisso di esclusione deve iniziare con un percorso specificato in un prefisso di inclusione.

Ad esempio, per includere oggetti in path_1/ ed escludere oggetti in subpath_1/, passa quanto segue:

include: path_1/
exclude: path_1/subpath_1/

In questo caso, il trasferimento include i seguenti oggetti:

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

Per includere tutti gli oggetti in path_1/ e path_2/, ad eccezione degli elementi in path_1/subpath_1/ o path_2/subpath_3/, supera i seguenti passaggi:

include: path_1/
         path_2/
exclude: path_1/subpath_1/
         path_2/subpath_3/

In questo caso, il trasferimento include i seguenti oggetti:

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

Esempi di inclusione o esclusione di percorsi errati

Le seguenti sezioni includono esempi da evitare quando vengono utilizzati o esclusi percorsi inclusi e come correggerli in modo che funzionino correttamente.

L'inclusione di un percorso utilizzato in un altro percorso include il prefisso

Ogni prefisso di inclusione deve specificare una porzione separata dello spazio dei nomi dell'oggetto. L'esempio seguente non è corretto perché il secondo valore è già incluso nello spazio dei nomi del primo valore:

include: path_1/
         path_1/subpath_1

In questo esempio, i valori del prefisso di inclusione non sono validi perché il secondo prefisso di inclusione, path_1/subpath_1, è già incluso in path_1/. Per risolvere il problema, rimuovi uno dei valori.

Utilizzo di un prefisso di esclusione che non inizia con un prefisso di inclusione

Ogni prefisso di esclusione deve iniziare con uno qualsiasi dei valori specificati. L'esempio seguente non è corretto perché i valori di prefisso di esclusione non iniziano con i valori di prefisso specificati:

include: path_1/
         path_2/
exclude: subpath_1
         subpath_4

In questo esempio, i valori del prefisso di esclusione non sono validi perché non iniziano con nessuno dei valori del prefisso di inclusione. Per risolvere il problema, assicurati che il prefisso di esclusione includa un percorso completo elencato come prefisso di inclusione:

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

Passaggi successivi