Mueve y cambia el nombre de 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 con las siguientes opciones:

  • 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.

Completa los siguientes pasos 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 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 del 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 donde se almacenarán los datos del depósito 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 controlar 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. Haz clic en Listo.
  6. Consulta Solución de problemas para obtener información detallada sobre los errores en las operaciones fallidas en el navegador de Cloud Storage.

gsutil

Usa el comando gsutil mb:

gsutil mb gs://[BUCKET_NAME]/

En el que:

  • [BUCKET_NAME] es el nombre que quieres asignar a tu depósito, sujeto a los requisitos de nomenclatura. Un ejemplo es my-bucket.

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

Un ejemplo es el siguiente:

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

Muestras 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 const& 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#.

public static Bucket StorageCreateBucket(string projectId, string bucketName)
{
    var storage = StorageClient.Create();
    var bucket = storage.CreateBucket(projectId, bucketName);
    Console.WriteLine($"Created {bucketName}.");
    return bucket;
}

Go

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

ctx := context.Background()
bucket := client.Bucket(bucketName)

ctx, cancel := context.WithTimeout(ctx, time.Second*10)
defer cancel()
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.

import com.google.cloud.storage.Bucket;
import com.google.cloud.storage.BucketInfo;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageClass;
import com.google.cloud.storage.StorageOptions;

public class CreateBucketWithStorageClassAndLocation {
  public static void createBucketWithStorageClassAndLocation(String projectId, String bucketName) {
    // The ID of your GCP project
    // String projectId = "your-project-id";

    // The ID to give your GCS bucket
    // String bucketName = "your-unique-bucket-name";

    Storage storage = StorageOptions.newBuilder().setProjectId(projectId).build().getService();

    // See the StorageClass documentation for other valid storage classes:
    // https://googleapis.dev/java/google-cloud-clients/latest/com/google/cloud/storage/StorageClass.html
    StorageClass storageClass = StorageClass.COLDLINE;

    // See this documentation for other valid locations:
    // http://g.co/cloud/storage/docs/bucket-locations#location-mr
    String location = "asia";

    Bucket bucket =
        storage.create(
            BucketInfo.newBuilder(bucketName)
                .setStorageClass(storageClass)
                .setLocation(location)
                .build());

    System.out.println(
        "Created bucket "
            + bucket.getName()
            + " in "
            + bucket.getLocation()
            + " with storage class "
            + bucket.getStorageClass());
  }
}

Node.js

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

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

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

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

async function createBucket() {
  // 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

  const [bucket] = await storage.createBucket(bucketName, {
    location: 'ASIA',
    storageClass: 'COLDLINE',
  });

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

createBucket().catch(console.error);

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.

from google.cloud import storage

def create_bucket(bucket_name):
    """Creates a new bucket."""
    # bucket_name = "your-new-bucket-name"

    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.

# 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
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 autorización de acceso 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]"
    }

    En el que:

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

    En el que:

    • [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 al que se asociará tu depósito. Un ejemplo es my-project.

API de XML

  1. Obtén un token de autorización de acceso de OAuth 2.0 Playground. Configura Playground para usar tus 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>

    En el que:

  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]"

    En el que:

    • [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 al 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. Un ejemplo es 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 Console para copiar los datos de un depósito de Cloud Storage a otro de la siguiente manera:

  1. Abre la página Transferencia de Google Cloud Console.

    Abrir la página Transferencia

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

    • 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.

    Esto inicia el proceso de copiar objetos desde tu depósito viejo a tu depósito nuevo. Este proceso puede tomar un tiempo; sin embargo, después de hacer clic en Crear, puedes salir de Google Cloud Console.

Para ver el progreso de la transferencia, abre la página Transferencia en Google Cloud Console.

Abrir la página Transferencia

Consulta Solución de problemas para obtener información detallada sobre los errores en las operaciones fallidas en el navegador de Cloud Storage.

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]

    En el que:

    • [SOURCE_BUCKET] es el nombre de tu depósito original. Un ejemplo es old-bucket.
    • [DESTINATION_BUCKET] es el nombre del nuevo depósito que creaste en el Paso 1: Crea un depósito nuevo. Un ejemplo es 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. En ese momento, debes repetir indefinidamente el método rewrite y llamarlo hasta que se muevan todos los datos de la siguiente manera:

  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://storage.googleapis.com/storage/v1/b/[SOURCE_BUCKET]/o/[OBJECT_NAME]/rewriteTo/b/[DESTINATION_BUCKET]/o/[OBJECT_NAME]"

    En el que:

    • [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. Un ejemplo es 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. Un ejemplo es 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://storage.googleapis.com/storage/v1/b/[SOURCE_BUCKET]/o/[OBJECT_NAME]/rewriteTo/b/[DESTINATION_BUCKET]/o/[OBJECT_NAME]"

    En el que:

    • [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. Un ejemplo es 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. Un ejemplo es 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. Un ejemplo es 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://storage.googleapis.com/storage/v1/b/[SOURCE_BUCKET]/o/[OBJECT_NAME]"

    En el que:

    • [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. Un ejemplo es old-bucket.
    • [OBJECT_NAME] es el nombre del objeto que deseas borrar. Un ejemplo es pets/dog.png.

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

Próximos pasos