Filtrer les objets sources par heure de modification

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

  • avant ou après une date et une heure spécifiques ;
  • avant ou après une durée spécifiée par rapport à la tâche de transfert.

Cette fonctionnalité est utile pour configurer des transferts incrémentaux ou pour ignorer les objets qui ne se trouvent pas dans une période donnée.

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

Filtrer par période

Le filtrage est défini par 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 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 modification Inclut les objets du transfert qui ont été modifiés pour la dernière fois il y a au plus cette durée. Par exemple, ce filtre peut être utilisé pour n'inclure que les objets 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 horodatages 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 30 minutes).

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 ensemble.

gcloud CLI

Pour filtrer par date de modification à l'aide de la gcloud CLI, transmettez les indicateurs de filtre temporel à 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 d'heure %Y-%m-%dT%H:%M:%S%z.
  • --include-modified-after-absolute inclut les objets modifiés pour la dernière fois après 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 après le 1er janvier 2020. Utilisez le format de date et d'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 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 et 1h30m pour une heure et 30 minutes.
  • --include-modified-after-relative inclut les objets modifiés au cours d'une durée spécifiée. Par exemple, si vous spécifiez une durée de 10d, les objets modifiés pour la dernière fois moins 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 et 1h30m pour une heure et 30 minutes.

Exemple (modifié après) :

La commande suivante ne transfère que les objets modifiés à partir du 1er octobre 2025.

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 date de modification à l'aide de l'API REST, spécifiez les champs de filtre temporel dans les 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 d'heure %Y-%m-%dT%H:%M:%S%z.
  • lastModifiedSince inclut les objets modifiés pour la dernière fois après 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 après le 1er janvier 2020. Utilisez le format de date et d'heure %Y-%m-%dT%H:%M:%S%z.
  • minTimeElapsedSinceLastModification inclut les objets qui ont été modifiés en dehors d'une duré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 et 1h30m pour une heure et 30 minutes.
  • maxTimeElapsedSinceLastModification inclut les objets modifiés au cours d'une durée spécifiée. Par exemple, si vous spécifiez une durée de 10d, les objets modifiés pour la dernière fois moins 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 et 1h30m pour une heure et 30 minutes.

Exemple (période) :

Le corps JSON suivant configure une tâche pour ne transférer que les objets modifiés au cours du mois d'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 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 : réduit le nombre d'objets à prendre en compte.

  2. Conditions d'objet (date de dernière modification) : filtre les objets qui correspondent au préfixe d'inclusion.

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

En savoir plus sur le filtrage par préfixe.

Exemple : Combiner tous les filtres

Imaginez que vous disposez de la configuration de filtre suivante :

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

Résultat : Le service exécute le transfert comme suit :

  1. Tout d'abord, il ne prend en compte que les objets du répertoire logs/.
  2. Ensuite, il recherche les objets qui ont été modifiés à partir du 31 octobre 2025.
  3. Enfin, il supprime de cette liste tous les objets qui se trouvent dans le répertoire logs/temp/.