Filtrer les objets sources par heure de modification

Vous pouvez filtrer les objets à transférer en fonction de leur heure de dernière modification. Cela vous permet de transférer uniquement les objets modifiés :

  • Avant ou après une date et une heure spécifiques
  • Avant ou après une durée écoulée spécifiée par rapport au job de transfert

Cette fonctionnalité est utile pour configurer des transferts incrémentaux ou pour ignorer les objets qui ne sont pas inclus dans une plage de temps.

Le filtrage par heure de dernière modification est disponible pour les transferts depuis toutes les sources, à l'exception des listes d'URL.

Filtres basés sur le temps

Le filtrage est défini avec les valeurs last modified since, last modified before, minimum time elapsed since modified et maximum time elapsed since modified. Vous pouvez utiliser les filtres individuellement ou ensemble pour créer une période.

Champ Description
Dernière modification depuis le Inclut les objets du transfert qui ont été modifiés pour la dernière fois à partir de cet horodatage.
Dernière modification avant le Inclut les objets du transfert qui ont été modifiés pour la dernière fois avant cet horodatage.
Temps minimal écoulé depuis la modification Inclut les objets du transfert qui ont été modifiés pour la dernière fois il y a au moins cette durée. Par exemple, ce filtre peut être utilisé pour n'inclure que les objets qui ont été modifiés il y a au moins un mois. Les objets sans "date de dernière modification" sont également transférés.
Temps maximal écoulé depuis la dernière modification Inclut les objets du transfert qui ont été modifiés pour la dernière fois il y a moins longtemps que cette durée. Par exemple, ce filtre peut être utilisé pour n'inclure que les objets qui ont été modifiés au cours des sept derniers jours. Les objets sans "date de dernière modification" sont également transférés.

Spécifier un filtre temporel

Vous pouvez spécifier des filtres de date de modification lorsque vous créez ou mettez à jour une tâche de transfert.

Les codes temporels doivent être au format UTC et mis en forme en tant que chaîne RFC 3339 (par exemple, 2025-10-31T10:00:00Z). Les durées utilisent le format de durée absolue (par exemple, 1m pour un mois et 1h30m pour une heure et demie).

Console Google Cloud

Pour spécifier un filtre temporel dans la console Google Cloud :

  1. Accédez à la page Créer une tâche de transfert ou Modifier une tâche de transfert.
  2. Dans la section Choisir les données à transférer, sélectionnez Dates et heures comme Type de filtre.
  3. Saisissez une date et une heure pour la période absolue ou une durée pour la période relative. Vous pouvez spécifier plusieurs filtres à la fois.

CLI gcloud

Pour filtrer par heure de modification à l'aide de gcloud CLI, transmettez les indicateurs de filtre basés sur le temps à la commande gcloud transfer jobs create ou gcloud transfer jobs update :

gcloud transfer jobs create SOURCE DESTINATION \
  --include-modified-before-absolute="DATETIME" \
  --include-modified-after-absolute="DATETIME" \
  --include-modified-before-relative="DURATION" \
  --include-modified-after-relative="DURATION"

Où :

  • --include-modified-before-absolute inclut les objets modifiés pour la dernière fois avant une date/heure absolue. Par exemple, si vous spécifiez 2020-01-01, le transfert inclut les objets modifiés pour la dernière fois avant le 1er janvier 2020. Utilisez le format de date et heure %Y-%m-%dT%H:%M:%S%z.
  • --include-modified-after-absolute inclut les objets modifiés après une date/heure absolue. Par exemple, si vous spécifiez "2020-01-01", le transfert inclut les objets modifiés après le 1er janvier 2020. Utilisez le format de date et heure %Y-%m-%dT%H:%M:%S%z.
  • --include-modified-before-relative inclut les objets qui ont été modifiés en dehors d'une durée écoulée spécifiée. Par exemple, si vous spécifiez une durée de 10d, les objets modifiés pour la dernière fois plus de 10 jours avant l'heure de début du transfert sont transférés. Utilisez le format de durée absolue. Exemple : 1m pour un mois ; 1h30m pour une heure et demie.
  • --include-modified-after-relative inclut les objets modifiés au cours d'une période spécifiée. Par exemple, si vous spécifiez une durée de 10d, les objets modifiés moins de 10 jours avant l'heure de début du transfert seront transférés. Utilisez le format de durée absolue. Exemple : 1m pendant un mois, 1h30m pendant 1 heure et demie.

Exemple (modifié après) :

La commande suivante ne transfère que les objets modifiés le 1er octobre 2025 ou après.

gcloud transfer jobs create gs://my-source-bucket gs://my-sink-bucket
  --include-modified-after-absolute="2025-10-01T00:00:00Z"

Exemple (période) :

La commande suivante ne transfère que les objets modifiés au cours du mois d'octobre 2025.

gcloud transfer jobs create gs://my-source-bucket gs://my-sink-bucket
  --include-modified-after-absolute="2025-10-01T00:00:00Z"
  --include-modified-before-absolute="2025-11-01T00:00:00Z"

Exemple (temps écoulé) :

La commande suivante ne transfère que les objets modifiés au cours des sept derniers jours.

gcloud transfer jobs create gs://my-source-bucket gs://my-sink-bucket
  --include-modified-after-relative="7d"

REST

Pour filtrer par heure de modification à l'aide de l'API REST, spécifiez les champs de filtre basés sur le temps dans le objectConditions de votre transferSpec.

{
  "description": "DESCRIPTION",
  "status": "ENABLED",
  "projectId": "PROJECT_ID",
  "transferSpec": {
    "gcsDataSource": {
      "bucketName": "SOURCE_BUCKET"
    },
    "gcsDataSink": {
      "bucketName": "DESTINATION_BUCKET"
    },
    "objectConditions": {
      "lastModifiedBefore": "DATETIME",
      "lastModifiedSince": "DATETIME",
      "minTimeElapsedSinceLastModification": "DURATION",
      "maxTimeElapsedSinceLastModification": "DURATION",

    }
  }
}

Où :

  • lastModifiedBefore inclut les objets modifiés pour la dernière fois avant une date/heure absolue. Par exemple, si vous spécifiez 2020-01-01, le transfert inclut les objets modifiés pour la dernière fois avant le 1er janvier 2020. Utilisez le format de date et heure %Y-%m-%dT%H:%M:%S%z.
  • lastModifiedSince inclut les objets modifiés après une date et heure absolues. Par exemple, si vous spécifiez "2020-01-01", le transfert inclut les objets modifiés après le 1er janvier 2020. Utilisez le format de date et heure %Y-%m-%dT%H:%M:%S%z.
  • minTimeElapsedSinceLastModification inclut les objets qui ont été modifiés en dehors d'une durée écoulée spécifiée. Par exemple, si vous spécifiez une durée de 10d, les objets modifiés pour la dernière fois plus de 10 jours avant l'heure de début du transfert seront transférés. Utilisez le format de durée absolue. Exemple : 1m pour un mois ; 1h30m pour une heure et demie.
  • maxTimeElapsedSinceLastModification inclut les objets modifiés au cours d'une période spécifiée. Par exemple, si vous spécifiez une durée de 10d, les objets modifiés moins de 10 jours avant l'heure de début du transfert seront transférés. Utilisez le format de durée absolue. Exemple : 1m pendant un mois, 1h30m pendant 1 heure et demie.

Exemple (période) :

Le corps JSON suivant configure un job pour transférer uniquement les objets modifiés en octobre 2025.

{
  "description": "Transfer October 2025 data",
  "status": "ENABLED",
  "projectId": "PROJECT_ID",
  "transferSpec": {
    "gcsDataSource": {
      "bucketName": "SOURCE_BUCKET"
    },
    "gcsDataSink": {
      "bucketName": "DESTINATION_BUCKET"
    },
    "objectConditions": {
      "lastModifiedSince": "2025-10-01T00:00:00Z",
      "lastModifiedBefore": "2025-11-01T00:00:00Z"
    }
  }
}

Pour en savoir plus, consultez la documentation de référence sur ObjectConditions.

Interaction avec d'autres filtres

Lorsque vous utilisez plusieurs filtres, le service de transfert de stockage les applique dans l'ordre suivant :

  1. Inclure les préfixes : limite les objets à prendre en compte.

  2. 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 dernière modification.

  3. Exclure les préfixes : supprime les objets du résultat.

En savoir plus sur le filtrage par préfixe et le filtrage avec des expressions glob

Exemple : Combiner tous les filtres

Imaginons que vous ayez la configuration de filtre suivante pour un transfert depuis AWS S3 ou Azure :

  • include_prefix: "logs/"
  • match_glob: "**/*.log"
  • lastModifiedSince: "2025-10-31T00:00:00Z"
  • exclude_prefix: "logs/temp/"

Résultat : le service exécutera le transfert comme suit :

  1. Tout d'abord, il ne prend en compte que les objets du répertoire logs/.
  2. Il recherche ensuite les objets qui se terminent par .log ET qui ont été modifiés le 31 octobre 2025 ou après.
  3. Enfin, il supprime tous les objets de cette liste qui se trouvent dans le répertoire logs/temp/.