Mueve y cambia el nombre de los depósitos

Cuando creas un depósito, defines de forma permanente su nombre, su ubicación geográfica y el proyecto del que es parte. Sin embargo, puedes mover o cambiar el nombre de tu depósito de forma efectiva:

  • Si no hay datos en tu depósito anterior, bórralo y crea otro con un nuevo nombre, en una nueva ubicación o en un nuevo proyecto.

  • Si tienes datos en tu depósito anterior, crea un depósito nuevo con el nombre, ubicación o proyecto que desees, copia los datos del depósito anterior al nuevo y borra el depósito anterior y su contenido. Los pasos a continuación describen este proceso.

    Ten en cuenta que, si deseas que tu depósito nuevo tenga el mismo nombre que el anterior, debes mover tus datos dos veces: un depósito intermediario retiene de forma temporal tus datos a fin de que puedas borrar el original y liberar el nombre para el depósito final.

Sigue los pasos a continuación para mover tus datos de un depósito a otro:

Paso 1: Crea un depósito nuevo

Console

  1. Abre el navegador de Cloud Storage en Google Cloud Platform Console.
    Abrir el navegador de Cloud Storage
  2. Haz clic en Crear depósito para abrir el formulario de creación de depósitos.
  3. Depósito nuevo.

  4. Ingresa la información de tu depósito y haz clic en Continuar para completar cada paso:
    • Especifica un Nombre, sujeto a los requisitos de nombre de depósitos.
    • Selecciona una clase de almacenamiento predeterminada para el depósito. La clase de almacenamiento predeterminada se asignará a todos los objetos que se suban al depósito. Luego, selecciona una Ubicación en la que los datos del depósito se almacenarán de forma permanente.

      Nota: el panel Estimación de costo mensual en el panel derecho calcula los costos mensuales del depósito en función de la clase y ubicación de almacenamiento seleccionadas, así como las operaciones y el tamaño de los datos esperados.

    • Selecciona un Modelo de control de acceso para determinar cómo controlas el acceso a los objetos del depósito.
    • De forma opcional, puedes agregar etiquetas de depósito, establecer una política de retención y elegir un método de encriptación.
  5. Haga clic en Listo.

gsutil

Usa el comando gsutil mb:

gsutil mb gs://[BUCKET_NAME]/

Donde:

Configura las siguientes marcas opcionales para tener un mayor control sobre la creación de tu depósito:

  • -p: especifica el proyecto con el que se asociará tu depósito. Por ejemplo, my-project.
  • -c: especifica la clase de almacenamiento predeterminada de tu depósito. Por ejemplo, nearline.
  • -l: especifica la ubicación de tu depósito. Por ejemplo, us-east1.
  • -b: habilita la opción Solo políticas de depósito para tu depósito.

Por ejemplo:

  gsutil mb -p [PROJECT_NAME] -c [STORAGE_CLASS] -l [BUCKET_LOCATION] -b on gs://[BUCKET_NAME]/

Ejemplos de código

C++

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para C++.

namespace gcs = google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string bucket_name) {
  StatusOr<gcs::BucketMetadata> bucket_metadata =
      client.CreateBucket(bucket_name, gcs::BucketMetadata());

  if (!bucket_metadata) {
    throw std::runtime_error(bucket_metadata.status().message());
  }

  std::cout << "Bucket " << bucket_metadata->name() << " created."
            << "\nFull Metadata: " << *bucket_metadata << "\n";
}

C#

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para C#.

private void CreateBucket(string bucketName)
{
    var storage = StorageClient.Create();
    storage.CreateBucket(s_projectId, bucketName);
    Console.WriteLine($"Created {bucketName}.");
}

Go

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para Go.

bucket := client.Bucket(bucketName)
if err := bucket.Create(ctx, projectID, &storage.BucketAttrs{
	StorageClass: "COLDLINE",
	Location:     "asia",
}); err != nil {
	return err
}

Java

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para Java.

Bucket bucket =
    storage.create(
        BucketInfo.newBuilder(bucketName)
            // See here for possible values: http://g.co/cloud/storage/docs/storage-classes
            .setStorageClass(StorageClass.COLDLINE)
            // Possible values: http://g.co/cloud/storage/docs/bucket-locations#location-mr
            .setLocation("asia")
            .build());

Node.js

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para Node.js.

// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');

// Creates a client
const storage = new Storage();

/**
 * TODO(developer): Uncomment the following line before running the sample.
 */
// const bucketName = 'Name of a bucket, e.g. my-bucket';

// Creates a new bucket in the Asia region with the coldline default storage
// class. Leave the second argument blank for default settings.
//
// For default values see: https://cloud.google.com/storage/docs/locations and
// https://cloud.google.com/storage/docs/storage-classes
await storage.createBucket(bucketName, {
  location: 'ASIA',
  storageClass: 'COLDLINE',
});

console.log(`Bucket ${bucketName} created.`);

PHP

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para PHP.

use Google\Cloud\Storage\StorageClient;

/**
 * Create a Cloud Storage Bucket.
 *
 * @param string $bucketName name of the bucket to create.
 * @param string $options options for the new bucket.
 *
 */
function create_bucket($bucketName, $options = [])
{
    $storage = new StorageClient();
    $bucket = $storage->createBucket($bucketName, $options);
    printf('Bucket created: %s' . PHP_EOL, $bucket->name());
}

Python

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para Python.

def create_bucket(bucket_name):
    """Creates a new bucket."""
    storage_client = storage.Client()
    bucket = storage_client.create_bucket(bucket_name)
    print('Bucket {} created'.format(bucket.name))

Ruby

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para Ruby.

# project_id    = "Your Google Cloud project ID"
# bucket_name   = "Name of Google Cloud Storage bucket to create"
# location      = "Location of where to create Cloud Storage bucket"
# storage_class = "Storage class of Cloud Storage bucket"

require "google/cloud/storage"

storage = Google::Cloud::Storage.new project_id: project_id
bucket  = storage.create_bucket bucket_name,
                                location:      location,
                                storage_class: storage_class

puts "Created bucket #{bucket.name} in #{location}" +
     " with #{storage_class} class"

API de REST

API de JSON

  1. Obtén un token de acceso de autorización de OAuth 2.0 Playground. Configura Playground para usar tus propias credenciales de OAuth.
  2. Crea un archivo .json que contenga la siguiente información:
  3. {
      "name": "[BUCKET_NAME]",
      "location": "[BUCKET_LOCATION]",
      "storageClass": "[STORAGE_CLASS]"
    }

    Donde:

  4. Usa cURL para llamar a la API de JSON:
    curl -X POST --data-binary @[JSON_FILE_NAME].json \
         -H "Authorization: Bearer [OAUTH2_TOKEN]" \
         -H "Content-Type: application/json" \
         "https://www.googleapis.com/storage/v1/b?project=[PROJECT_ID]"

    Donde:

    • [JSON_FILE_NAME] es el nombre del archivo JSON que creaste en el paso 2.
    • [OAUTH2_TOKEN] es el token de acceso que generaste en el paso 1.
    • [PROJECT_ID] es el ID del proyecto con el que se asociará tu depósito. Por ejemplo, my-project.

API de XML

  1. Obtén un token de acceso de autorización de OAuth 2.0 Playground. Configura Playground para usar tus propias credenciales de OAuth.
  2. Crea un archivo .xml que contenga la siguiente información:
  3. <CreateBucketConfiguration>
       <LocationConstraint>[BUCKET_LOCATION]</LocationConstraint>
       <StorageClass>[STORAGE_CLASS]</StorageClass>
    </CreateBucketConfiguration>

    Donde:

  4. Usa cURL para llamar a la API de XML:
    curl -X PUT --data-binary @[XML_FILE_NAME].xml \
         -H "Authorization: Bearer [OAUTH2_TOKEN]" \
         -H "x-goog-project-id: [PROJECT_ID]" \
         "https://storage.googleapis.com/[BUCKET_NAME]"

    Donde:

    • [XML_FILE_NAME] es el nombre del archivo XML que creaste en el paso 2.
    • [OAUTH2_TOKEN] es el token de acceso que generaste en el paso 1.
    • [PROJECT_ID] es el ID del proyecto con el que se asociará tu depósito. Por ejemplo, my-project.
    • [BUCKET_NAME] es el nombre que quieres asignar a tu depósito, sujeto a los requisitos de nomenclatura. Por ejemplo, my-bucket.

Paso 2: Copia los objetos de tu depósito anterior al nuevo

Console

Usa el Servicio de transferencia de almacenamiento de Cloud desde Google Cloud Platform Console para copiar los datos de un depósito de Cloud Storage a otro:

  1. Abre la página de Transferencias de Google Cloud Platform Console.

    Abrir la página de Transferencias

  2. Haz clic en Crear trabajo de transferencia.
  3. Sigue la explicación paso a paso y haz clic en Continuar a medida que completas cada uno:

    • Selecciona la fuente: Usa Depósito de Google Cloud Storage como la fuente seleccionada y haz clic en Examinar para buscar y seleccionar el depósito de origen de los objetos.

    • Selecciona el destino: haz clic en Examinar para buscar y seleccionar el depósito al que deseas mover tus objetos.

      Además, selecciona la casilla de verificación Borrar los objetos de origen después de completar la transferencia.

    • Configura la transferencia: Puedes ignorar esta sección.

  4. Después de completar la explicación paso a paso, haz clic en Crear.

    Así, comienza el proceso de copiar objetos de tu depósito antiguo al nuevo. Este proceso puede tomar un tiempo, sin embargo, después de hacer clic en Crear, puedes salir de Google Cloud Platform Console.

Para ver el progreso de la transferencia: abre la página de Transferencias en Google Cloud Platform Console.

Abrir la página de Transferencias

gsutil

  1. Asegúrate de tener gsutil 4.12 instalado como mínimo.
  2. Usa el comando gsutil cp con la opción -r para copiar de forma recursiva todos tus objetos del depósito de origen al de destino:

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

    Donde:

    • [SOURCE_BUCKET] es el nombre de tu depósito original. Por ejemplo, old-bucket.
    • [DESTINATION_BUCKET] es el nombre del nuevo depósito que creaste en el Paso 1: Crea un depósito nuevo. Por ejemplo, my-bucket.

API de REST

API de JSON

Usa el método rewrite de la API de JSON para copiar los datos en fragmentos de tamaño limitado en varias solicitudes. Cuando lo hagas, debes hacer un bucle y llamar al método rewrite hasta que se muevan todos los datos:

  1. Usa cURL y el método rewrite de la API de JSON para copiar datos de un depósito de origen a uno de destino:

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

    Donde:

    • [OAUTH2_TOKEN] es el token de acceso que generaste en el paso 1 de Paso 1: Crea un depósito nuevo.
    • [SOURCE_BUCKET] es el nombre de tu depósito original. Por ejemplo, old-bucket.
    • [OBJECT_NAME] es el nombre del objeto que deseas copiar. Por ejemplo, pets/dog.png.
    • [DESTINATION_BUCKET] es el nombre del nuevo depósito que creaste en el Paso 1: Crea un depósito nuevo. Por ejemplo, my-bucket.

    Si el objeto tiene, por ejemplo, 10 GB de tamaño, la respuesta a esta solicitud se parece al siguiente ejemplo:

    {
    "kind": "storage#rewriteResponse",
    "totalBytesRewritten": 1048576,
    "objectSize": 10000000000,
    "done": false,
    "rewriteToken": [TOKEN_VALUE]
    }
  2. Usa rewriteToken en una solicitud posterior para continuar con la copia de datos:

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

    Donde:

    • [OAUTH2_TOKEN] es el token de acceso que generaste en el paso 1 de Paso 1: Crea un depósito nuevo.
    • [TOKEN_VALUE] es el valor de rewriteToken que se muestra en el paso 1.
    • [SOURCE_BUCKET] es el nombre de tu depósito original. Por ejemplo, old-bucket.
    • [OBJECT_NAME] es el nombre del objeto que deseas copiar. Por ejemplo, pets/bunny.png.
    • [DESTINATION_BUCKET] es el nombre del nuevo depósito que creaste en el Paso 1: Crea un depósito nuevo. Por ejemplo, my-bucket.

Cuando se copian todos los datos, la última respuesta tiene una propiedad done igual a true, no hay ninguna propiedad rewriteToken y los metadatos del objeto copiado se incluyen en resource.

{
  "kind": "storage#rewriteResponse",
  "totalBytesRewritten": 10000000000,
  "objectSize": 10000000000,
  "done": true,
  "resource": objects Resource
}

Paso 3: Borra los objetos de tu depósito anterior

Console

No necesitas hacer nada para borrar los objetos de tu depósito anterior: como parte de la copia de objetos con el servicio de transferencia, los objetos antiguos se borran de forma automática (siempre que selecciones la casilla de verificación “Borrar los objetos de origen después de completar la transferencia”).

gsutil

Usa el comando gsutil rm con la opción -r para borrar de forma recursiva todos tus objetos del depósito fuente, además del depósito fuente en sí:

gsutil rm -r gs://[SOURCE_BUCKET]

En el que [SOURCE_BUCKET] es el nombre del depósito original. Por ejemplo, old-bucket.

O bien, para borrar los objetos, pero mantener el depósito de origen, haz lo siguiente:

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

API de REST

API de JSON

  • Usa cURL y el método delete de la API de JSON para quitar la versión original de tus datos con el siguiente comando:

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

    Donde:

    • [OAUTH2_TOKEN] es el token de acceso que generaste en el paso 1 de Paso 1: Crea un depósito nuevo.
    • [SOURCE_BUCKET] es el nombre de tu depósito original. Por ejemplo, old-bucket.
    • [OBJECT_NAME] es el nombre del objeto que deseas borrar. Por ejemplo, pets/dog.png.

Si se completa correctamente, el método muestra una respuesta vacía.

Próximos pasos

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

¿Necesitas ayuda? Visita nuestra página de asistencia.