Gérer les tâches de transfert sur site

Avant de pouvoir commencer un transfert, vous devez créer une tâche de transfert et un ou plusieurs agents doivent être installés et connectés à cette tâche. Ce document explique comment créer une tâche de transfert, installer des agents de transfert et gérer vos tâches de transfert.

Prérequis

Pour utiliser le transfert sur site, vous avez besoin des éléments suivants :

  • Une source compatible avec POSIX.

  • Un serveur ou une machine virtuelle Linux 64 bits compatible avec Docker qui peut accéder aux données que vous prévoyez de transférer.

    Docker Community Edition, compatible avec les systèmes d'exploitation CentOs, Debian, Fedora et Ubuntu.

    Pour utiliser d'autres systèmes d'exploitation Linux, consultez la page sur Docker Enterprise.

  • Un bucket Cloud Storage sans règle de conservation

    Pour effectuer un transfert vers un bucket avec une règle de conservation, nous vous recommandons de procéder comme suit:

    1. Créez un bucket Cloud Storage dans la même région que le bucket final. Assurez-vous que ce bucket temporaire ne dispose pas de règles de conservation.

      Pour en savoir plus sur les régions, consultez la page Emplacements des buckets.

    2. Utilisez le service de transfert des données sur site pour transférer vos données vers le bucket temporaire que vous avez créé sans règle de conservation.

    3. Effectuez un transfert de bucket à bucket pour transférer les données vers le bucket avec règle de conservation.

    4. Supprimez le bucket Cloud Storage que vous avez créé pour stocker vos données de manière temporaire.

  • Terminez la configuration initiale du transfert sur site.

Avant de commencer un transfert, vérifiez les points suivants :

  • Les ports TCP 80 (HTTP) et 443 (HTTPS) sont ouverts pour les connexions sortantes.
  • Tous les processus d'agent d'un même projet Google Cloud ont le même système de fichiers installé au même point d'installation.

Restrictions liées au scaling des tâches et des agents

Le transfert sur site présente les restrictions de scaling suivantes pour les agents et les tâches de transfert :

  • Le nombre de fichiers par tâche doit être inférieur à un milliard.
  • Le nombre d'agents par projet de transfert ne doit pas dépasser 100.
  • La limite de bande passante doit être supérieure à 1 Mbit/s.

Créer une tâche de transfert

Avant de pouvoir commencer un transfert, vous devez créer une tâche de transfert. La tâche de transfert coordonne et contrôle vos agents sur site lorsqu'ils déplacent vos données.

Pour créer une tâche de transfert, procédez comme suit :

CLI gcloud

Tout d'abord, si vous ne disposez pas encore d'un pool d'agents et d'agents pour ce transfert:

  1. Créer un pool d'agents

    gcloud transfer agent-pools create my-agent-pool
    
  2. Installez les agents de transfert:

    gcloud transfer agents install --pool=my-agent-pool --count=3
    

    Consultez la section Conditions requises et bonnes pratiques pour les agents pour déterminer le nombre optimal d'agents pour votre environnement.

    Pour exécuter des agents à l'aide d'une clé de compte de service, utilisez l'option --creds-file:

    gcloud transfer agents install --pool=my-agent-pool --count=3 \
       --creds-file=/relative/path/to/service-account-key.json
    

    Pour obtenir la liste complète des options facultatives, exécutez gcloud transfer agents install --help.

Exécutez ensuite la commande gcloud transfer jobs create.

gcloud transfer jobs create \
SOURCE DESTINATION \
[--source-agent-pool=projects/$PROJECT_ID/agentPools/my-source-agent-pool] \
[--destination-agent-pool=projects/$PROJECT_ID/agentPools/my-destination-agent-pool] \
[--intermediate-storage-path=gs://INTERMEDIATE_BUCKET_NAME]

Où :

  • SOURCE a l'une des valeurs suivantes :

    • Un système de fichiers POSIX, au format posix:///path/to/folder. Il doit s'agir d'un chemin absolu à partir de la racine de la machine hôte de l'agent.
    • Un bucket Cloud Storage, au format gs://bucket-name.
    • Un bucket Amazon S3 ou un conteneur Microsoft Azure Storage.
  • DESTINATION a l'une des valeurs suivantes :

    • Un système de fichiers POSIX, au format posix:///path/to/folder. Il doit s'agir d'un chemin absolu à partir de la racine de la machine hôte de l'agent.
    • Un bucket Cloud Storage, au format gs://bucket-name.
  • --source-agent-pool spécifie le pool d'agents sources à utiliser pour ce transfert, si vous effectuez le transfert à partir d'un système de fichiers.

  • --destination-agent-pool spécifie le pool d'agents de destination à utiliser pour ce transfert, en cas de transfert vers un système de fichiers.

  • --intermediate-storage-path spécifie le chemin d'accès à un dossier dans un bucket Cloud Storage (gs://example-bucket/example-folder) à utiliser comme stockage intermédiaire lors du transfert entre deux systèmes de fichiers. Nous vous recommandons d'utiliser un dossier vide réservé à cette tâche de transfert pour vous assurer que les données transférées n'interagissent pas avec vos données Cloud Storage existantes.

Des options supplémentaires vous sont proposées :

  • Informations sur la tâche: vous pouvez spécifier name et description.

  • Programmation: spécifiez schedule-starts, schedule-repeats-every, schedule-repeats-until ou do-not-run.

  • Options de transfert : indiquez si vous souhaitez remplacer les fichiers de destination (--overwrite-when=different ou always) et si vous souhaitez supprimer certains fichiers pendant ou après le transfert (--delete-from=destination-if-unique ou source-after-transfer) ; indiquez quelles valeurs de métadonnées sont à conserver (--preserve-metadata) ; et éventuellement définissez une classe de stockage sur des objets transférés (--custom-storage-class).

  • Notifications: configurez des notifications Pub/Sub pour les transferts avec notification-pubsub-topic, notification-event-types et notification-payload-format.

  • Logging : configurez les actions de transfert et les états d'action signalés lorsque des journaux sont générés pour cette tâche.

Notez que les conditions d'objet (options commençant par --include- ou --exclude-) ne sont pas acceptées pour les transferts impliquant des systèmes de fichiers POSIX.

Par exemple, pour créer une tâche de transfert permettant de déplacer des données d'un système de fichiers local vers un bucket Google Cloud Storage nommé my-unique-bucket, exécutez la commande suivante:

gcloud transfer jobs create \
posix:///usr/local/my_dir gs://my-unique-bucket \
--source-agent-pool=projects/PROJECT_ID/agentPools/SOURCE_POOL`

Pour afficher toutes les options, exécutez la commande gcloud transfer jobs create --help.

Cloud Console

  1. Accédez à la console Web du service de transfert des données sur site dans Google Cloud Console.

    Accéder à la page du service de transfert des données sur site

  2. Cliquez sur Créer une tâche de transfert.

    La page Créer une tâche de transfert s'affiche.

  3. Sélectionnez un pool d'agents pour votre transfert. Pour créer un pool d'agents, procédez comme suit :

    1. Cliquez sur Créer un pool d'agents.

      Le formulaire Créer un pool d'agents s'affiche.

    2. Remplissez le formulaire, puis cliquez sur Créer.

      Le nouveau pool d'agents est mis en surbrillance sur la page Créer une tâche de transfert. Sélectionnez-le pour confirmer votre choix.

  4. Spécifiez une source en saisissant le chemin d'accès complet du répertoire du système de fichiers source.

  5. Spécifiez un bucket de destination Cloud Storage. Vous pouvez saisir un nom de bucket Cloud Storage ou créer un bucket.

    Pour créer et sélectionner un bucket, procédez comme suit :

    1. Cliquez sur Parcourir.

    2. Cliquez sur Nouveau bucket.

      Le formulaire Créer un bucket s'affiche.

    3. Remplissez le formulaire et cliquez sur Créer, puis sur Sélectionner.

  6. Facultatif : Pour transférer des fichiers dans un dossier au lieu du niveau supérieur de votre bucket, spécifiez le nom du dossier et le chemin d'accès complet qui lui est associé.

  7. Décrivez la tâche de transfert. Saisissez une brève description de votre transfert qui vous aidera à le suivre.

  8. Facultatif : Créez une planification pour votre tâche.

  9. Cliquez sur Create (Créer).

API REST

Utilisez transferJobs.create avec posixDataSource :

POST https://storagetransfer.googleapis.com/v1/transferJobs
{
  "name":"transferJobs/sample_transfer",
  "description": "My First Transfer",
  "status": "ENABLED",
  "projectId": "my_transfer_project_id",
  "schedule": {
      "scheduleStartDate": {
          "year": 2022,
          "month": 5,
          "day": 2
      },
      "startTimeOfDay": {
          "hours": 22,
          "minutes": 30,
          "seconds": 0,
          "nanos": 0
      }
      "scheduleEndDate": {
          "year": 2022,
          "month": 12,
          "day": 31
      },
      "repeatInterval": {
          "259200s"
      },
  },
  "transferSpec": {
      "posixDataSource": {
           "rootDirectory": "/bar/",

      },
      "gcsDataSink": {
           "bucketName": "destination_bucket"
           "path": "foo/bar/"
      },
   }
}

Le champ schedule est facultatif. S'il n'est pas inclus, la tâche de transfert doit être démarrée avec une requête transferJobs.run.

Pour vérifier l'état de votre transfert après avoir créé une tâche, utilisez transferJobs.get :

GET https://storagetransfer.googleapis.com/v1/transferJobs/sample_transfer?project_id=my_transfer_project_id

Si vous ne l'avez pas déjà fait, installez et exécutez les agents de transfert sur site sur chacune de vos machines.

Contrôler l'utilisation de la bande passante pour le service de transfert des données sur site

Les limites de bande passante sont utiles si vous devez limiter la quantité de données que le service de transfert des données sur site exploite pour transférer des données vers Cloud Storage. La définition d'une limite de bande passante permet de s'assurer que :

  • les liaisons ascendantes du réseau ne seront pas saturées suite à l'utilisation du service de transfert des données sur site ;

  • le comportement de l'application existante de votre organisation ne se dégradera pas pendant le transfert ;

  • vos coûts n'augmenteront pas soudainement si la facturation de votre connexion réseau s'effectue sur l'utilisation de la bande passante maximale.

Les limites de bande passante sont appliquées au niveau du pool d'agents et sont divisées entre tous les agents du pool.

Définir une limite de bande passante

Pour définir une limite de bande passante, procédez comme suit :

CLI gcloud

Vous pouvez définir une limite de bande passante sur un pool d'agents au moment de la création ou à tout moment une fois que le pool d'agents existe.

Pour définir une limite de bande passante lors de la création d'un pool d'agents, spécifiez l'option --bandwidth-limit :

gcloud transfer agent-pools create POOL_NAME --bandwidth-limit=BANDWIDTH_LIMIT

Pour définir une limite de bande passante sur un pool d'agents existant, utilisez la commande gcloud transfer agent-pools update :

gcloud transfer agent-pools update POOL_NAME --bandwidth-limit=BANDWIDTH_LIMIT

Remplacez POOL_NAME par le nom du pool à créer ou à mettre à jour. Remplacez BANDWIDTH_LIMIT par une valeur représentant la bande passante maximale en Mo/s. Par exemple, pour définir une bande passante maximale sur l'ensemble des agents du pool de 50 Mo par seconde, spécifiez --bandwidth-limit=50.

Cloud Console

  1. Dans Cloud Console, accédez à la page Service de transfert des données sur site.

    Accéder au service de transfert des données sur site

  2. Cliquez sur Paramètres de connexion.

  3. Sélectionnez le pool d'agents à mettre à jour.

  4. Cliquez sur Définir une limite de bande passante.

  5. Saisissez la limite réseau souhaitée en mégaoctets par seconde (Mo/s), puis cliquez sur Définir une limite.

    La limite de bande passante s'affiche pour le projet.

Modifier une limite de bande passante

CLI gcloud

Pour modifier la limite de bande passante d'un pool d'agents, utilisez la commande gcloud transfer agent-pools update :

gcloud transfer agent-pools update POOL_NAME --bandwidth-limit=BANDWIDTH_LIMIT

Remplacez POOL_NAME par le nom du pool à mettre à jour. Remplacez BANDWIDTH_LIMIT par une valeur représentant la nouvelle bande passante maximale en Mo/s. Par exemple, pour définir une bande passante maximale sur l'ensemble des agents du pool de 50 Mo par seconde, spécifiez --bandwidth-limit=50.

Pour supprimer une limite, utilisez l'option --clear-bandwidth-limit :

gcloud transfer agent-pools update POOL_NAME --clear-bandwidth-limit

Cloud Console

Pour modifier une limite de bande passante existante, cliquez sur Modifier la limite sur la page Paramètres de connexion.

Pour supprimer une limite, cliquez sur Utiliser toute la bande passante.

Surveiller les tâches

Vous pouvez surveiller les tâches du service de transfert des données sur site afin de vous assurer qu'elles fonctionnent comme prévu.

Pour surveiller vos tâches de transfert, procédez comme suit :

CLI gcloud

Exécutez la commande transfer jobs monitor :

gcloud transfer jobs monitor JOB_NAME

Pour afficher plus de détails, utilisez le "nom de l'opération" renvoyé par cette commande en tant qu'entrée de la commande operations describe :

gcloud transfer operations describe OPERATION_NAME

Cloud Console

  1. Accédez à la page Tâches de transfert du service de transfert des données sur site dans Google Cloud Console.

    Accéder à la page Tâches de transfert du service de transfert des données sur site

    La liste des tâches s'affiche. Cette liste comprend les tâches en cours et terminées.

  2. Pour afficher des informations détaillées sur une tâche de transfert, cliquez sur la description de la tâche qui vous intéresse.

    La page Détails de la tâche s'affiche.

La page Détails de la tâche affiche les informations suivantes :

  • Le volume de données qui a été transféré

  • Les informations de configuration de la tâche de transfert

  • Les informations concernant les tâches planifiées ou récurrentes

  • Les détails d'exécution de la tâche la plus récente

  • L'historique de toutes les tâches exécutées précédemment

API REST

Utilisez la méthode transferJobs.list pour obtenir la liste de toutes les tâches de transfert.

Pour obtenir plus d'informations sur une tâche de transfert spécifique, utilisez la méthode transferJobs.get, qui renvoie un objet TransferJob.

Pour vérifier l'état d'un transfert en cours, transmettez la valeur TransferJob.latestOperationName à transferOperations.get.

Filtrer les tâches

Si vous avez plusieurs tâches et que vous souhaitez en surveiller un sous-ensemble, songez à utiliser des filtres pour trier et afficher uniquement les tâches qui vous intéressent.

Pour filtrer vos tâches de transfert, procédez comme suit :

CLI gcloud

Utilisez les options --job-statuses et --job-names dans la commande transfer jobs list pour répertorier les tâches avec le ou les états et/ou noms spécifiés.

gcloud transfer jobs list --job-statuses=[JOB_STATUSES,…] --job-names=[JOB_NAMES,…]

Les valeurs acceptables pour JOB_STATUSES sont enabled, disabled et deleted. Séparez les différents états par une virgule.

Cloud Console

  1. Cliquez sur Liste des filtres .

  2. Sélectionnez les filtres que vous souhaitez appliquer.

API REST

Pour filtrer des tâches de transfert, indiquez le paramètre de requête filter sur transferJobs.list.

Modifier les configurations de tâches

Pour modifier une configuration de tâche, procédez comme suit :

CLI gcloud

Pour modifier une tâche existante, utilisez la commande transfer jobs update :

gcloud transfer jobs update NAME

Pour obtenir la liste complète des champs pouvant être mis à jour, consultez la documentation de référence transfer jobs update.

Cloud Console

  1. Accédez à la page Tâches de transfert du service de transfert des données sur site dans Google Cloud Console.

    Accéder à la page Tâches de transfert du service de transfert des données sur site

  2. Cliquez sur Description de la tâche pour la tâche que vous modifiez.

    La page Détails de la tâche s'affiche.

  3. Cliquez sur Configuration

  4. Cliquez sur à côté de l'élément de configuration que vous souhaitez modifier.

API REST

Vous pouvez mettre à jour une tâche de transfert après l'avoir créée à l'aide de transferJobs.patch.

Réexécuter des tâches

Le service de transfert des données sur site permet de réexécuter à une reprise une tâche terminée. Cela peut être utile si vous devez déplacer des données supplémentaires et souhaitez réutiliser une configuration de tâche existante.

Pour réexécuter une tâche, procédez comme suit :

CLI gcloud

Exécutez la commande transfer jobs run :

gcloud transfer jobs run NAME

Pour exécuter la tâche tout en bloquant les autres tâches dans votre terminal jusqu'à la fin de l'opération de transfert, incluez l'option --no-async. Si elle n'est pas incluse, les tâches seront exécutées de manière asynchrone.

gcloud transfer jobs run NAME --no-async

Cloud Console

  1. Accédez à la page Tâches de transfert du service de transfert des données sur site dans Google Cloud Console.

    Accéder à la page Tâches de transfert du service de transfert des données sur site

  2. Cliquez sur Description de la tâche pour la tâche que vous modifiez.

    La page Détails de la tâche s'affiche.

  3. Cliquez sur  Exécuter à nouveau.

    La tâche démarre.

API REST

Vous pouvez réexécuter une tâche de transfert à l'aide de transferJobs.run et en fournissant jobName.

Afficher les erreurs

Pour afficher un exemple des erreurs rencontrées lors du transfert, procédez comme suit :

CLI gcloud

Exécutez la commande transfer jobs monitor :

gcloud transfer jobs monitor JOB_NAME

Pour afficher plus de détails, transmettez le "nom de l'opération" renvoyé par la commande gcloud transfer jobs monitor JOB_NAME en tant qu'entrée de la commande operations describe :

gcloud transfer operations describe OPERATION_NAME

Cloud Console

  1. Accédez à la page Tâches de transfert du service de transfert des données sur site dans Google Cloud Console.

    Accéder à la page Tâches de transfert du service de transfert des données sur site

  2. Cliquez sur Description de la tâche pour la tâche que vous modifiez.

    La page Détails de la tâche s'affiche.

  3. Cliquez sur Voir les informations sur l'erreur.

    La page Détails de l'erreur s'affiche. Elle contient un exemple des erreurs rencontrées durant le transfert.

API REST

Vous pouvez afficher la tâche d'erreur de transfert à l'aide de transferOperations.get.

Afficher les journaux de transfert

Le service de transfert des données sur site génère des journaux de transfert détaillés qui vous permettent de vérifier les résultats de votre tâche de transfert. Chaque tâche crée une collection de journaux de transfert qui sont stockés dans le bucket Cloud Storage de destination.

Les journaux sont générés pendant l'exécution de la tâche de transfert. Les journaux complets sont généralement disponibles dans les 15 minutes suivant la fin de la tâche.

Vous pouvez afficher les journaux de l'une des manières suivantes :

Afficher les erreurs dans Google Cloud Console

Pour afficher toutes les erreurs rencontrées lors du transfert dans Google Cloud Console, procédez comme suit :

  1. Cliquez sur Afficher les journaux de transfert.

    La page Informations sur le bucket s'affiche. Il s'agit d'une destination dans votre bucket Cloud Storage.

  2. Cliquez sur le journal de transfert qui vous intéresse.

    Les journaux de transfert s'affichent. Pour plus d'informations, consultez la page Format du journal de transfert sur site.

Afficher les journaux dans le bucket de destination

Les journaux de transfert sont stockés dans le bucket de destination au chemin suivant :

destination-bucket-name/storage-transfer/logs/transferJobs/job-name/transferOperations/operation-name

où :

  • destination-bucket-name est le nom du bucket Cloud Storage de destination de la tâche.
  • job-name correspond au nom de la tâche, tel qu'il apparaît dans la liste des tâches.
  • operation-name correspond au nom de l'opération de transfert individuelle, composé de l'horodatage IS08601 et de l'ID généré.

Les journaux sont agrégés et stockés en tant qu'objets. Chaque lot de journaux est nommé en fonction de sa date de création. Exemple :

my bucket/storage-transfer/logs/transferOperations/job1/2019-10-19T10_52_56.519081644-07_00.log

Les journaux de transfert s'affichent. Pour plus d'informations, consultez la page Format du journal de transfert sur site.

Exécuter des requêtes BigQuery sur les journaux de transfert

Pour exécuter des requêtes BigQuery sur vos journaux de transfert, procédez comme suit :

  1. Chargez les données de journal au format CSV dans BigQuery.

  2. Exécutez votre requête BigQuery.

Exemples de requêtes

Afficher le nombre de fichiers ayant fait l'objet d'une tentative de transfert et l'état échec/réussite

select ActionStatus, count(*) as num_files
from big-query-table
where Action="TRANSFER"
group by 1;

big-query-table est le nom de la table BigQuery qui contient le journal de transfert.

Afficher tous les fichiers dont le transfert a échoué

select Src_File_Path
from big-query-table
where Action="TRANSFER" and ActionStatus="FAILED";

big-query-table est le nom de la table BigQuery qui contient le journal de transfert.

Afficher la somme de contrôle et l'horodatage pour chaque fichier transféré

select Timestamp, Action, ActionStatus, Src_File_Path, Src_File_Size,
Src_File_Crc32C, Dst_Gcs_BucketName, Dst_Gcs_ObjectName, Dst_Gcs_Size,
Dst_Gcs_Crc32C, Dst_Gcs_Md5
from big-query-table
where Action="TRANSFER" and ActionStatus="SUCCEEDED";

big-query-table est le nom de la table BigQuery qui contient le journal de transfert.

Afficher tous les détails des erreurs pour les répertoires dont le transfert a échoué

select FailureDetails_ErrorType, FailureDetails_GrpcCode, FailureDetails_Message
from big-query-table
where Action="FIND" and ActionStatus="FAILED";

big-query-table est le nom de la table BigQuery qui contient le journal de transfert.

Étape suivante

Consultez la section Exigences et bonnes pratiques pour les agents pour plus d'informations sur l'optimisation de la configuration de votre agent.