Déplacer et renommer des buckets

Lorsque vous créez un bucket, vous définissez de manière permanente son nom, sa zone géographique ainsi que le projet auquel il appartient. Cependant, vous pouvez tout de même déplacer ou renommer votre bucket dans les situations suivantes :

  • Si votre ancien bucket ne contient pas de données, il vous suffit de le supprimer et d'en créer un autre sous un nouveau nom, à un nouvel emplacement ou dans un nouveau projet.

  • Si votre ancien bucket contient des données, créez-en un nouveau avec le nom, la zone et le projet souhaités, copiez les données de l'ancien bucket dans le nouveau, puis supprimez l'ancien bucket et son contenu. Les étapes suivantes décrivent ce processus.

    Notez que si vous souhaitez que votre nouveau bucket porte le même nom que l'ancien, vous devez déplacer vos données à deux reprises : un bucket intermédiaire stocke temporairement vos données afin que vous puissiez supprimer celui d'origine et libérer son nom pour le nouveau bucket.

Pour déplacer vos données d'un bucket à un autre, procédez comme suit.

Console

Utilisez le service de transfert de stockage Cloud depuis Google Cloud Console pour copier des données d'un bucket Cloud Storage sur un autre :

  1. Si vous n'avez pas encore de bucket de destination, vous devez créer un bucket.
  2. Ouvrez la page "Transfert" dans Google Cloud Console.

    Ouvrir la page Transfert

  3. Cliquez sur Créer une tâche de transfert.
  4. Suivez la procédure détaillée en cliquant sur Continuer à chaque étape.

    • Sélectionnez la source : choisissez Bucket Google Cloud Storage comme source sélectionnée, puis cliquez sur Parcourir pour rechercher et sélectionner le bucket à partir duquel vous souhaitez déplacer vos objets.

    • Sélectionnez la destination : cliquez sur Parcourir pour rechercher et sélectionner le bucket dans lequel vous souhaitez déplacer vos objets.

      Cochez également la case Supprimer les objets sources à la fin du transfert.

    • Configurez le transfert : vous pouvez ignorer cette section.

  5. Une fois que vous avez effectué l'intégralité de la procédure détaillée fournie, cliquez sur Créer.

    Cette validation entraîne la copie des fichiers de votre ancien bucket dans le nouveau. Ce processus peut prendre un certain temps. Notez cependant qu'après avoir cliqué sur Créer, vous pouvez quitter Google Cloud Console.

    Pour afficher la progression du transfert, ouvrez la page "Transfert" dans Google Cloud Console.

    Ouvrir la page Transfert

    Consultez la page Dépannage pour découvrir comment obtenir des informations détaillées sur les erreurs liées aux opérations ayant échoué dans le navigateur Cloud Storage.

  6. Une fois le transfert terminé, vous n'avez rien à faire pour supprimer les objets de votre ancien bucket si vous avez coché la case Supprimer les objets sources à la fin du transfert lors de la configuration. Si vous souhaitez supprimer l'ancien bucket, vous devez effectuer une procédure distincte.

gsutil

  1. Assurez-vous d'avoir installé au minimum gsutil 4.12.
  2. Si vous n'avez pas encore de bucket de destination, veillez à créer un bucket.
  3. Exécutez la commande gsutil cp avec l'option -r pour copier de manière récursive tous les objets du bucket source dans le bucket de destination :

    gsutil cp -r gs://SOURCE_BUCKET/* gs://DESTINATION_BUCKET

    Où :

    • SOURCE_BUCKET correspond au nom du bucket d'origine. Par exemple, old-bucket.
    • DESTINATION_BUCKET correspond au nom du bucket vers lequel vous transférez vos données. Par exemple, my-bucket.
  4. Utilisez la commande gsutil rm avec l'option -r pour supprimer de manière récursive tous les objets du bucket source, ainsi que le bucket source lui-même :

    gsutil rm -r gs://SOURCE_BUCKET

    SOURCE_BUCKET correspond au nom du bucket d'origine. Par exemple, old-bucket.

    Si vous souhaitez supprimer les objets tout en conservant le bucket source, exécutez la commande suivante :

    gsutil rm -a gs://SOURCE_BUCKET/**

API REST

API JSON

Utilisez la méthode rewrite de l'API JSON pour copier des données sous forme de fragments de taille limitée sur plusieurs requêtes. Lorsque vous procédez ainsi, vous devez exécuter la méthode rewrite en boucle jusqu'à ce que toutes les données soient déplacées :

  1. Obtenez un jeton d'autorisation d'accès sur la page OAuth 2.0 Playground. Configurez Playground pour utiliser vos propres identifiants OAuth.
  2. Si vous n'avez pas encore de bucket de destination, veillez à créer un bucket.

  3. Utilisez cURL et la méthode rewrite de l'API JSON pour copier les données d'un bucket source dans un bucket de destination :

    curl -X POST \
     -H "Authorization: Bearer OAUTH2_TOKEN" \
     -H "Content-Length: 0" \
     "https://storage.googleapis.com/storage/v1/b/SOURCE_BUCKET/o/OBJECT_NAME/rewriteTo/b/DESTINATION_BUCKET/o/OBJECT_NAME"

    Où :

    • OAUTH2_TOKEN correspond au jeton d'accès que vous avez généré à l'étape 1.
    • SOURCE_BUCKET correspond au nom du bucket d'origine. Par exemple, old-bucket.
    • OBJECT_NAME correspond au nom de l'objet que vous souhaitez copier. Par exemple, pets/dog.png.
    • DESTINATION_BUCKET correspond au nom du bucket vers lequel vous transférez vos données. Par exemple, my-bucket.

    Par exemple, si la taille de l'objet est de 10 Go, la réponse à cette requête se présente comme l'exemple suivant :

    {
     "kind": "storage#rewriteResponse",
     "totalBytesRewritten": 1048576,
     "objectSize": 10000000000,
     "done": false,
     "rewriteToken": TOKEN_VALUE
    }
  4. Utilisez rewriteToken dans une requête ultérieure pour continuer à copier des données :

    curl -X POST \
     -H "Authorization: Bearer OAUTH2_TOKEN" \
     -H "Content-Length: 0" \
     -d '{"rewriteToken": "TOKEN_VALUE"}' \
     "https://storage.googleapis.com/storage/v1/b/SOURCE_BUCKET/o/OBJECT_NAME/rewriteTo/b/DESTINATION_BUCKET/o/OBJECT_NAME"

    Où :

    • OAUTH2_TOKEN correspond au jeton d'accès que vous avez généré à l'étape 1.
    • TOKEN_VALUE correspond à la valeur rewriteToken renvoyée à l'étape précédente.
    • SOURCE_BUCKET correspond au nom du bucket d'origine. Par exemple, old-bucket.
    • OBJECT_NAME correspond au nom de l'objet que vous souhaitez copier. Par exemple, pets/bunny.png.
    • DESTINATION_BUCKET correspond au nom du bucket vers lequel vous transférez vos données. Par exemple, my-bucket.

    Lorsque toutes les données sont copiées, la propriété done de la dernière réponse a la valeur true, la réponse n'a pas de propriété rewriteToken et les métadonnées de l'objet copié sont incluses dans la propriété resource.

    {
      "kind": "storage#rewriteResponse",
      "totalBytesRewritten": 10000000000,
      "objectSize": 10000000000,
      "done": true,
      "resource": objects Resource
    }
  5. Utilisez cURL et la méthode delete de l'API JSON pour supprimer la version originale de vos données à l'aide de la commande suivante :

    curl -X DELETE \
    -H "Authorization: Bearer OAUTH2_TOKEN" \
    "https://storage.googleapis.com/storage/v1/b/SOURCE_BUCKET/o/OBJECT_NAME"

    Où :

    • OAUTH2_TOKEN correspond au jeton d'accès que vous avez généré à l'étape 1.
    • SOURCE_BUCKET correspond au nom du bucket d'origine. Par exemple, old-bucket.
    • OBJECT_NAME correspond au nom de l'objet que vous souhaitez supprimer. Par exemple, pets/dog.png.

Étapes suivantes