Les jobs du service de transfert de stockage sont compatibles avec les chaînes de recherche contenant des caractères génériques tels que * et ? pour correspondre aux noms ou aux chemins d'accès des fichiers. Ces chaînes de recherche sont appelées "expressions glob".
Vous pouvez utiliser des modèles glob pour spécifier les objets sources à inclure dans un transfert. Cela permet un contrôle plus précis que le filtrage par préfixe seul.
Le filtrage avec des expressions glob est compatible avec les transferts depuis AWS S3 et Azure.
Syntaxe Glob
Un modèle glob utilise la syntaxe suivante pour faire correspondre les chemins d'accès aux objets :
| Syntaxe | Description |
|---|---|
? |
Correspond à n'importe quel caractère, à l'exception de /. |
* |
Correspond à zéro ou plusieurs caractères, à l'exception de /. |
** |
Correspond à zéro ou plusieurs caractères, y compris /. |
[abc]
|
Correspond à un seul caractère (par exemple, a, b ou c). |
[a-z]
|
Correspond exactement à un caractère dans la plage inclusive (par exemple, de a à z). |
[!abc] ou [^abc]
|
Correspond exactement à un caractère qui n'est pas a, b ni c. |
{abc,xyz}
|
Correspond à l'une des chaînes (par exemple, abc ou xyz). Ne peut pas contenir de barres obliques (/) ni de doubles astérisques (**). |
\?
|
Correspond au caractère littéral après la barre oblique inverse (par exemple, \? correspond à un ? littéral). |
Exemples de formats
Faites correspondre tous les fichiers .log des répertoires december :
logs_by_year/**/december/*.log
Transférez tous les fichiers du répertoire data_analytics/ qui ne commencent pas par un . (point) ou un _ (trait de soulignement) :
data_analytics/[!._]*
Pour rendre l'exemple précédent récursif :
data_analytics/**/[!._]*
Transférer tous les fichiers PDF de deux répertoires spécifiques :
quarterly_reports/2025/{q1-final,q4-final}/*.pdf
Spécifier un modèle glob
Vous pouvez spécifier un modèle glob lorsque vous créez ou mettez à jour un job de transfert.
CLI gcloud
Pour filtrer par expression glob à l'aide de la CLI gcloud, transmettez l'option --match-glob à la commande gcloud transfer jobs create ou gcloud transfer jobs update :
gcloud transfer jobs create SOURCE DESTINATION \
--match-glob="GLOB_PATTERN"
Exemple :
La commande suivante crée un job qui ne transfère que les fichiers .log des répertoires december :
gcloud transfer jobs create s3://my-source-bucket gs://my-sink-bucket \
--match-glob="logs_by_year/**/december/*.log"
REST
Pour filtrer par expression glob à l'aide de l'API REST, spécifiez le champ matchGlob dans le objectConditions de votre 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"
}
}
}
Pour en savoir plus, consultez la référence ObjectConditions.
Console Google Cloud
Le filtrage par expression glob n'est pas compatible avec la console Google Cloud.
Interaction avec d'autres filtres
Lorsque vous utilisez un filtre de modèle glob avec des filtres de préfixe ou des filtres de date de dernière modification, le service de transfert de stockage applique les filtres dans l'ordre suivant :
Inclure les préfixes : limite les objets à prendre en compte.
Conditions de l'objet (modèle glob et heure de la dernière modification) : filtre les objets correspondant au préfixe d'inclusion. Pour qu'un objet soit inclus dans le résultat, il doit correspondre à la fois au filtre glob et au filtre de date de dernière modification.
Exclure les préfixes : supprime les objets du résultat.
En savoir plus sur le filtrage par préfixe et le filtrage par heure de dernière modification
Inclure les préfixes
Le modèle glob n'est appliqué qu'aux objets correspondant à au moins un préfixe d'inclusion.
Le service de transfert de stockage renvoie une erreur si votre modèle glob contredit tous les modèles de préfixe d'inclusion.
Exemple : combinaison valide
include_prefix:["foo/"]match_glob:"foo/bar/**"Résultat : Valide. Le service liste d'abord les objets sous
foo/, puis applique le modèle glob à cette liste.
Exemple : combinaison valide
include_prefix:["logs/2024/", "logs/2025/"]match_glob:"**/*.json"Résultat : Valide. Le service liste tous les objets des répertoires
2024et2025, puis ne transfère que les fichiers se terminant par.json.
Exemple : Contradiction
include_prefix:["foo/"]match_glob:"bar/**"Résultat : Erreur. Le format
match_globne peut correspondre à aucun des objets sélectionnés parinclude_prefix.
Exclure des préfixes
Le filtre de préfixe d'exclusion est appliqué après le filtre de préfixe d'inclusion et le filtre de schéma glob.
Aucune vérification de cohérence n'est effectuée. Tout objet correspondant à un préfixe d'exclusion est supprimé de la liste de transfert, même s'il correspond au modèle glob.
Exemple
include_prefix:["logs/"]match_glob:"**/*.log"exclude_prefix:["logs/temp/"]Résultat : Le service transfère tous les objets sous
logs/qui se terminent par.log, à l'exception de ceux du répertoirelogs/temp/.