Téléchargements d'objets en plusieurs parties

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

L'une des stratégies de téléchargement de fichiers volumineux est appelée téléchargement d'objets en plusieurs parties. Dans ce type de téléchargement, les requêtes GET sont effectuées par plages en parallèle, en stockant des données dans un fichier de destination temporaire préalloué. Une fois toutes les parties terminées, le fichier temporaire est renommé en tant que fichier de destination.

Le téléchargement d'objets en plusieurs parties peut être considérablement plus rapide si la vitesse du réseau et du disque ne sont pas des facteurs limitants. Toutefois, les téléchargements d'objets en plusieurs parties entraînent plusieurs écritures à différents emplacements sur le disque. Par conséquent, cette stratégie de téléchargement peut dégrader les performances des disques présentant des temps de recherche lents, en particulier lors du fractionnement d'un téléchargement en beaucoup de parties. Les outils tels que gcloud et gsutil ont des valeurs par défaut faibles pour le nombre de parties qu'ils créent afin de minimiser le risque d'impact sur les performances.

Les téléchargements d'objets en parties doivent toujours utiliser une somme de contrôle (CRC32C) facilement composable pour vérifier l'intégrité des données des parties. Pour effectuer des téléchargements d'objets par tranches, des outils tels que gsutil et gcloud nécessitent une version compilée de crcmod sur la machine effectuant le téléchargement. Si la version compilée de crcmod n'est pas disponible, gsutil et gcloud effectuent des téléchargements d'objets non divisés en plusieurs parties à la place.

Compatibilité avec gcloud

Par défaut, gcloud storage cp active les téléchargement d'objets en plusieurs parties. Vous pouvez contrôler comment et quand gcloud effectue des téléchargements d'objets en parties en modifiant les propriétés suivantes :

  • storage/sliced_object_download_threshold : taille totale minimale des fichiers pour effectuer un téléchargement d'un objet en plusieurs parties. Vous pouvez désactiver tous les téléchargements d'objets en plusieurs parties en définissant cette valeur sur 0.

  • storage/sliced_object_download_max_components : nombre maximal de parties à utiliser dans le téléchargement. Définissez 0 sans limite, auquel cas le nombre de tranches est déterminé uniquement par storage/sliced_object_download_component_size.

  • storage/sliced_object_download_component_size : taille cible de chaque partie de téléchargement. Cette propriété est ignorée si la taille totale du fichier est si importante que le téléchargement de parties de cette taille nécessiterait plus de parties que prévu, comme défini dans storage/sliced_object_download_max_components.

Vous pouvez modifier ces propriétés en créant une configuration nommée et en appliquant la configuration soit par commande à l'aide de l'option --configuration à l'échelle du projet ou pour toutes les commandes gcloud à l'aide de la commande gcloud config set.

Aucun espace disque local supplémentaire n'est requis lorsque vous utilisez gcloud pour effectuer des téléchargements d'objets en plusieurs parties. Si le téléchargement échoue avant la fin, exécutez à nouveau la commande gcloud pour reprendre les parties qui ont échoué. Les parties qui ont été téléchargées avant l'échec ne sont pas téléchargées lorsque vous effectuez une nouvelle tentative, sauf dans le cas où l'objet source a changé entre les tentatives de téléchargement.

Les objets temporaires téléchargés apparaissent dans le répertoire de destination avec le suffixe _.gstmp dans leur nom.

Compatibilité avec gsutil

Par défaut, gsutil cp active les téléchargement d'objets en plusieurs parties. Vous pouvez contrôler quand et comment gsutil effectue des téléchargements d'objets en parties en modifiant les paramètres suivants :

  • sliced_object_download_threshold : taille totale minimale des fichiers pour effectuer le téléchargement d'un objet en plusieurs parties. Vous pouvez désactiver tous les téléchargements d'objets en plusieurs parties en définissant cette valeur sur 0.

  • sliced_object_download_max_components : nombre maximal de parties à utiliser dans le téléchargement. Définissez 0 sur sans limite. Dans ce cas, le nombre de parties est déterminé uniquement par sliced_object_download_component_size.

  • sliced_object_download_component_size : taille cible de chaque partie de téléchargement. Ce paramètre est ignoré si la taille totale du fichier est si importante que le téléchargement de parties de cette taille nécessiterait plus de parties que ce qui est autorisé, tel que défini dans sliced_object_download_max_components.

Vous pouvez modifier ces paramètres soit pour chaque commande en utilisant l'option globale -o, soit pour toutes les commandes gsutil en modifiant le fichier de configuration .boto.

Aucun espace disque local supplémentaire n'est requis lorsque vous utilisez gsutil pour effectuer des téléchargements d'objets en plusieurs parties. Si le téléchargement échoue avant la fin, exécutez à nouveau la commande gsutil pour reprendre les parties qui ont échoué. Les parties qui ont été téléchargées avant l'échec ne sont pas téléchargées lorsque vous relancez la commande.

Les objets temporaires téléchargés apparaissent dans le répertoire de destination avec le suffixe _.gstmp dans leur nom.

Compatibilité avec JSON et XML

L'API JSON et l'API XML sont compatibles avec les requêtes GET par plages, ce qui signifie que vous pouvez utiliser l'une ou l'autre de ces API pour mettre en œuvre votre propre stratégie de téléchargement d'objets en plusieurs parties.

Afin d'empêcher la corruption des données en raison de l'évolution de l'objet source lors du téléchargement, vous devez fournir le numéro de génération de l'objet source dans chaque requête de téléchargement d'une partie de l'objet.