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:
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.
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.
Effectuez un transfert de bucket à bucket pour transférer les données vers le bucket avec règle de conservation.
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:
Créer un pool d'agents
gcloud transfer agent-pools create my-agent-pool
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.
- Un système de fichiers POSIX, au format
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
.
- Un système de fichiers POSIX, au format
--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
etdescription
.Programmation: spécifiez
schedule-starts
,schedule-repeats-every
,schedule-repeats-until
oudo-not-run
.Options de transfert : indiquez si vous souhaitez remplacer les fichiers de destination (
--overwrite-when=different
oualways
) et si vous souhaitez supprimer certains fichiers pendant ou après le transfert (--delete-from=destination-if-unique
ousource-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
etnotification-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
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
Cliquez sur Créer une tâche de transfert.
La page Créer une tâche de transfert s'affiche.
Sélectionnez un pool d'agents pour votre transfert. Pour créer un pool d'agents, procédez comme suit :
Cliquez sur Créer un pool d'agents.
Le formulaire Créer un pool d'agents s'affiche.
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.
Spécifiez une source en saisissant le chemin d'accès complet du répertoire du système de fichiers source.
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 :
Cliquez sur Parcourir.
Cliquez sur Nouveau bucket.
Le formulaire Créer un bucket s'affiche.
Remplissez le formulaire et cliquez sur Créer, puis sur Sélectionner.
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é.
Décrivez la tâche de transfert. Saisissez une brève description de votre transfert qui vous aidera à le suivre.
Facultatif : Créez une planification pour votre tâche.
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
Dans Cloud Console, accédez à la page Service de transfert des données sur site.
Cliquez sur Paramètres de connexion.
Sélectionnez le pool d'agents à mettre à jour.
Cliquez sur Définir une limite de bande passante.
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
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.
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
Cliquez sur Liste des filtres filter_list.
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
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
Cliquez sur Description de la tâche pour la tâche que vous modifiez.
La page Détails de la tâche s'affiche.
Cliquez sur Configuration
Cliquez sur edit à 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
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
Cliquez sur Description de la tâche pour la tâche que vous modifiez.
La page Détails de la tâche s'affiche.
Cliquez sur replay 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
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
Cliquez sur Description de la tâche pour la tâche que vous modifiez.
La page Détails de la tâche s'affiche.
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 :
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.
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 :
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;
Où 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";
Où 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";
Où 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";
Où 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.