Transfiere entre depósitos de Cloud Storage

El Servicio de transferencia de almacenamiento se puede usar para transferir grandes cantidades de datos entre buckets de Cloud Storage, dentro del mismo proyecto de Google Cloud o entre diferentes proyectos.

Las migraciones de buckets son útiles en varias situaciones. Se pueden usar para consolidar datos de proyectos separados, mover datos a una ubicación de copia de seguridad o cambiar la ubicación de tus datos.

Cuándo usar el Servicio de transferencia de almacenamiento

Google Cloud ofrece varias opciones para transferir datos entre depósitos de Cloud Storage. Recomendamos los siguientes lineamientos:

  • Si transfieres menos de 1 TB: usa gcloud. Para obtener instrucciones, consultar Mueve y cambia el nombre de los buckets.

  • Transferencia de más de 1 TB: usa el Servicio de transferencia de almacenamiento. El Servicio de transferencia de almacenamiento es una opción de transferencia administrada que proporciona seguridad, confiabilidad y rendimiento listos para usar. Elimina la necesidad de optimizar y mantener secuencias de comandos y manejar los reintentos.

En esta guía, se analizan las prácticas recomendadas para transferir datos entre buckets de Cloud Storage mediante el Servicio de transferencia de almacenamiento.

Define una estrategia de transferencia

La estrategia de transferencia depende de la complejidad de tu de la situación actual. Asegúrate de incluir las siguientes consideraciones en tu plan.

Elige un nombre para el bucket

Para trasladar datos a un bucket de almacenamiento con una ubicación diferente, elige una de los siguientes enfoques:

  • Nombre del bucket nuevo. Actualiza tus aplicaciones para que apunten a un bucket de almacenamiento con un nombre diferente.
  • Mantén el nombre del bucket. Reemplaza tu bucket de almacenamiento para mantener el nombre actual lo que significa que no necesitas actualizar tus aplicaciones.

En ambos casos, debes planificar el tiempo de inactividad y avisar a los usuarios según corresponda. de que se avecina el tiempo de inactividad. Revisa las siguientes explicaciones para comprender cuáles es la mejor opción para ti.

Nombre del bucket nuevo

Con un nuevo nombre de bucket, debe actualizar todo el código y los servicios que usan su bucket actual. La forma de hacerlo depende de cómo se compilen y cuando se implementa un plan.

Para ciertas configuraciones, este enfoque puede tener menos tiempo de inactividad, pero requiere más para garantizar una transición sin problemas. Este proceso consta de los siguientes pasos:

  1. Copiando tus datos a un bucket de almacenamiento nuevo.
  2. Se está iniciando el tiempo de descanso.
  3. Actualizar tus aplicaciones para que apunten al bucket nuevo
  4. Verificar que todo funcione según lo esperado y que todos los sistemas relevantes y las cuentas tienen acceso al bucket.
  5. Borrar el bucket original
  6. Finalizando tu tiempo de descanso.

Mantener el nombre del bucket

Usa este enfoque si prefieres no cambiar tu código para que apunte a un bucket nuevo. de la fuente de datos. Este proceso consta de los siguientes pasos:

  1. Copiar tus datos a un bucket de almacenamiento temporal.
  2. Se está iniciando el tiempo de descanso.
  3. Borrar el bucket original
  4. Crear un bucket nuevo con el mismo nombre que tu bucket original.
  5. Copia los datos en tu bucket nuevo desde el bucket temporal.
  6. Borrar el bucket temporal
  7. Verificar que todo funcione según lo esperado y que todos los sistemas relevantes y las cuentas tienen acceso al bucket.
  8. Finalizando tu tiempo de descanso.

Reducir el tiempo de inactividad

El Servicio de transferencia de almacenamiento no bloquea las lecturas ni las escrituras en el origen o el destino buckets durante una transferencia.

Si decides bloquear manualmente las operaciones de lectura y escritura en tu bucket, puedes minimizar de tiempo de inactividad transfiriendo tus datos en dos pasos: de origen y de sincronización.

  1. Transferencia de origen: Realiza una transferencia masiva sin bloquear la lectura o escritura en la fuente.

  2. Transferencia de sincronización: Después de que se complete la primera ejecución, bloquea la lectura/escritura en al bucket de origen y realizar otra transferencia. El Servicio de transferencia de almacenamiento transfiere son incrementales de forma predeterminada, por lo que esta segunda transferencia solo transfiere que cambiaron durante la transferencia de origen.

Optimiza la velocidad de transferencia

Cuando estimes cuánto tiempo lleva un trabajo de transferencia, considera los cuellos de botella. Por ejemplo, si la fuente tiene miles de millones de archivos pequeños, la velocidad de transferencia dependerá de QPS. Si los tamaños de objetos son grandes, el ancho de banda puede ser el cuello de botella.

Los límites de ancho de banda se establecen a nivel de la región y se asignan de manera equitativa entre todos los proyectos. Si hay suficiente ancho de banda disponible, el Servicio de transferencia de almacenamiento puede completar alrededor de 1,000 tareas por trabajo de transferencia por segundo. Puedes acelerar una transferencia en este caso dividiendo tu trabajo en varios trabajos de transferencia pequeños, como con los prefijos de inclusión y exclusión para transferir ciertos archivos.

Cuando la ubicación, la clase de almacenamiento y la clave de encriptación son iguales El Servicio de transferencia de almacenamiento no crea una copia nueva de los bytes. sino que crea un nueva entrada de metadatos que apunta al BLOB de origen. Como resultado, la misma ubicación y las copias de clase de un gran corpus se completan muy rápidamente y solo se Depende de QPS.

Las eliminaciones también son operaciones de solo metadatos. Para estas transferencias, paralelizar la transferencia dividiéndola en varios trabajos pequeños puede aumentar la velocidad.

Cómo conservar metadatos

Los siguientes metadatos de objeto se conservan cuando se transfieren datos entre Buckets de Cloud Storage con el Servicio de transferencia de almacenamiento:

  • Metadatos personalizados creados por el usuario.
  • Campos de metadatos de clave fija de Cloud Storage, como Cache-Control, Content-Disposition, Content-Type y Custom-Time.
  • Tamaño del objeto
  • Se conserva el número de generación como un campo de metadatos personalizados con la clave x-goog-reserved-source-generation, que puedes editar o quitar más adelante.

Los siguientes campos de metadatos se pueden conservar de forma opcional cuando se transfiere con la API:

  • LCA (acl)
  • Clase de almacenamiento (storageClass)
  • CMEK (kmsKey)
  • Retención temporal (temporaryHold)
  • Hora de creación del objeto (customTime)

Consulta la referencia de la API de TransferSpec. para obtener más información.

Los siguientes campos de metadatos no se conservan:

  • Hora de la última actualización (updated)
  • etag
  • componentCount

Si se conserva, la hora de creación del objeto se almacena como un campo personalizado. customTime. El tiempo de updated del objeto se restablece después de la transferencia, por lo que también se restablece el tiempo del objeto que pasa en su clase de almacenamiento. Esto significa que un objeto en Después de la transferencia, Coldline Storage tiene que existir nuevamente durante 90 días en el destino para evitar cargos por eliminación temprana.

Puedes aplicar las políticas de ciclo de vida basadas en createTime usando customTime. Se reemplazan los valores customTime existentes.

Para obtener más detalles sobre lo que se conserva y lo que no, consulta Conservación de metadatos.

Cómo controlar objetos con control de versiones

Si quieres transferir todas las versiones de tus objetos de almacenamiento y no solo los más reciente, debes usar la CLI de gcloud o la API de REST para transferir tus datos, combinados con la función de manifiesto del Servicio de transferencia de almacenamiento.

Sigue estos pasos para transferir todas las versiones de objetos:

  1. Enumera los objetos de bucket y cópialos en un archivo JSON:

    gcloud storage ls --all-versions --recursive --json [SOURCE_BUCKET] > object-listing.json
    

    Por lo general, este comando enumera alrededor de 1,000 objetos por segundo.

  2. Dividir el archivo JSON en dos archivos CSV, uno con versiones no actuales y otro con las versiones publicadas:

    jq -r '.[] | select( .type=="cloud_object" and (.metadata | has("timeDeleted") | not)) | [.metadata.name, .metadata.generation] | @csv' object-listing.json > live-object-manifest.csv
    jq -r '.[] | select( .type=="cloud_object" and (.metadata | has("timeDeleted"))) | [.metadata.name, .metadata.generation] | @csv' object-listing.json > non-current-object-manifest.csv
    
  3. Habilitar el control de versiones de objetos activado el bucket de destino.

  4. Para transferir las versiones no actuales primero pasa el archivo de manifiesto non-current-object-manifest.csv como el valor del campo transferManifest.

  5. Luego, transfiere las versiones publicadas de la misma manera y especifica live-object-manifest.csv como el archivo de manifiesto.

Configurar opciones de transferencia

Algunas de las opciones disponibles cuando configuras tu transferencia son las siguientes: sigue:

  • Registro: Cloud Logging proporciona registros detallados de objetos individuales, lo que te permite verificar el estado de las transferencias y realizar verificaciones adicionales de integridad de los datos.

  • Filtros: Tú puede usar prefijos de inclusión y exclusión para limitar los objetos en el que opera el Servicio de transferencia de almacenamientoo. Esta opción se puede usar para dividir una transferencia en múltiples trabajos de transferencia para que puedan ejecutarse en paralelo. Consulta Optimiza la velocidad de transferencia para obtener más información información.

  • Opciones de transferencia: Puedes configurar tu transferencia para reemplazar los elementos existentes en el bucket de destino; para borrar objetos en el destino que no existen en el conjunto de transferencia; o borrar objetos transferidos de la fuente.

Transfiere tus datos

Después de definir tu estrategia de transferencia, puedes hacer lo siguiente: realizar la transferencia por su cuenta.

Crea un bucket nuevo

Antes de comenzar la transferencia, crea un bucket de almacenamiento. Consulta location_considerations para obtener ayuda. elegir una ubicación de bucket adecuada.

Es posible que quieras copiar algunos de los metadatos del bucket. cuando crees el bucket nuevo. Consulta Obtén bucket buckets. para aprender a mostrar los metadatos del bucket de origen y aplicar el la misma configuración al bucket nuevo.

Copia objetos en el bucket nuevo

Puedes copiar objetos del bucket de origen a uno nuevo con el La consola de Google Cloud, la CLI de gcloud, la API de REST o las bibliotecas cliente El enfoque que elijas dependerá de tu estrategia de transferencia.

Las siguientes instrucciones son para el caso de uso básico de la transferencia de objetos de un bucket a otro y se debe modificar para adaptarlo a tus necesidades.

No incluyas información sensible, como información de identificación personal (PII) o datos de seguridad en el nombre del trabajo de transferencia. Los nombres de recursos pueden ser se propagan a los nombres de otros recursos de Google Cloud y pueden exponerse a los sistemas internos de Google fuera de tu proyecto.

Consola de Google Cloud

Usa el Servicio de transferencia de almacenamiento de Cloud desde la consola de Google Cloud:

  1. Abre la página Transferencia en la consola de Google Cloud.

    Abrir la página Transferencia

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

    • Primeros pasos: Usa Google Cloud Storage como Source Type. y Tipo de destino.

    • Elige una fuente: ingresa directamente el nombre del bucket deseado Haz clic en Explorar para buscar y seleccionar el bucket que deseas.

    • Elige un destino: ingresa el nombre del bucket deseado de forma directa o haz clic en Examinar para buscar y seleccionar el bucket que deseas.

    • Selecciona la configuración: Selecciona la opción Borrar archivos desde la fuente después de la transferencia.

    • Opciones de programación: 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 copia de objetos desde tu bucket anterior al nuevo. Este proceso puede tomar un tiempo; sin embargo, después de hacer clic en Crear, puedes salir de la consola de Google Cloud.

    Para ver el progreso de la transferencia, haz lo siguiente:

    Abre la página Transferencia en la consola de Google Cloud.

    Abrir la página de Transferencias

    Para obtener información detallada sobre los errores del Servicio de transferencia de almacenamiento las operaciones en la consola de Google Cloud, consulta Solución de problemas

  5. Una vez que se complete la transferencia, no es necesario que hagas nada para borrar el objetos de tu bucket anterior si seleccionaste Borrar objetos de origen después de completar la transferencia durante la configuración. Sin embargo, podrás si también quieres borrar tu bucket anterior que debes hacer por separado.

gcloud CLI

Instala la CLI de gcloud

Si aún no lo has hecho, instala la herramienta de línea de comandos de gcloud.

Luego, llama a gcloud init para inicializar la herramienta y especificar el ID del proyecto y la cuenta de usuario. Consulta Inicializa el SDK de Cloud para más detalles.

gcloud init

Agrega la cuenta de servicio a tu carpeta de destino

Debes agregar la cuenta de servicio del Servicio de transferencia de almacenamiento a tu bucket de destino antes de crear una transferencia. Para hacerlo, usa gcloud storage buckets add-iam-policy-binding:

gcloud storage buckets add-iam-policy-binding gs://bucket_name \
--member=serviceAccount:project-12345678@storage-transfer-service.iam.gserviceaccount.com \
--role=roles/storage.admin

Para obtener instrucciones sobre cómo usar la consola de Google Cloud o la API, consulta Usa los permisos de IAM en la documentación de Cloud Storage.

Crea el trabajo de transferencia

Para crear un trabajo de transferencia nuevo, usa el comando gcloud transfer jobs create. La creación de un trabajo nuevo inicia la transferencia especificada, a menos que un programa o Se especifica --do-not-run.

gcloud transfer jobs create SOURCE DESTINATION

Aquí:

  • SOURCE es la fuente de datos para esta transferencia, en el formato gs://BUCKET_NAME.

  • DESTINATION es tu bucket nuevo, con el formato gs://BUCKET_NAME.

Las opciones adicionales incluyen:

  • Información del trabajo: puedes especificar --name y --description.

  • Programa: Especifica --schedule-starts, --schedule-repeats-every, y --schedule-repeats-until o --do-not-run.

  • Condiciones de objetos: Usa condiciones para determinar qué objetos se transfieren. Estos incluyen --include-prefixes y --exclude-prefixes, y las condiciones basadas en el tiempo en --include-modified-[before | after]-[absolute | relative].

  • Opciones de transferencia: Especifica si deseas reemplazar los archivos de destino. (--overwrite-when=different o always) y si deseas borrar determinados archivos durante o después de la transferencia (--delete-from=destination-if-unique o source-after-transfer); especificar qué [valores de metadatos que se conservarán]metadatos; y De manera opcional, establece una clase de almacenamiento en objetos transferidos (--custom-storage-class).

  • Notificaciones: Configura las notificaciones de Pub/Sub para transferencias con --notification-pubsub-topic, --notification-event-types y --notification-payload-format.

Para ver todas las opciones, ejecuta gcloud transfer jobs create --help.

Por ejemplo, para transferir todos los objetos con el prefijo folder1, haz lo siguiente:

gcloud transfer jobs create gs://old-bucket gs://new-bucket \
  --include-prefixes="folder1/"

REST

En este ejemplo, aprenderás cómo mover archivos desde un bucket de Cloud Storage a otro. Por ejemplo, puedes replicar datos en un bucket en otra ubicación.

Realiza la solicitud con transferJobs create:

POST https://storagetransfer.googleapis.com/v1/transferJobs
{
  "description": "YOUR DESCRIPTION",
  "status": "ENABLED",
  "projectId": "PROJECT_ID",
  "schedule": {
      "scheduleStartDate": {
          "day": 1,
          "month": 1,
          "year": 2025
      },
      "startTimeOfDay": {
          "hours": 1,
          "minutes": 1
      },
      "scheduleEndDate": {
          "day": 1,
          "month": 1,
          "year": 2025
      }
  },
  "transferSpec": {
      "gcsDataSource": {
          "bucketName": "GCS_SOURCE_NAME"
      },
      "gcsDataSink": {
          "bucketName": "GCS_SINK_NAME"
      },
      "transferOptions": {
          "deleteObjectsFromSourceAfterTransfer": true
      }
  }
}

Respuesta:

200 OK
{
  "transferJob": [
      {
          "creationTime": "2015-01-01T01:01:00.000000000Z",
          "description": "YOUR DESCRIPTION",
          "name": "transferJobs/JOB_ID",
          "status": "ENABLED",
          "lastModificationTime": "2015-01-01T01:01:00.000000000Z",
          "projectId": "PROJECT_ID",
          "schedule": {
              "scheduleStartDate": {
                  "day": 1,
                  "month": 1,
                  "year": 2015
              },
              "startTimeOfDay": {
                  "hours": 1,
                  "minutes": 1
              }
          },
          "transferSpec": {
              "gcsDataSource": {
                  "bucketName": "GCS_SOURCE_NAME",
              },
              "gcsDataSink": {
                  "bucketName": "GCS_NEARLINE_SINK_NAME"
              },
              "objectConditions": {
                  "minTimeElapsedSinceLastModification": "2592000.000s"
              },
              "transferOptions": {
                  "deleteObjectsFromSourceAfterTransfer": true
              }
          }
      }
  ]
}

Bibliotecas cliente

En este ejemplo, aprenderás cómo mover archivos desde un bucket de Cloud Storage a otro. Por ejemplo, puedes replicar datos en un depósito en otra ubicación.

Para obtener más información sobre las bibliotecas cliente del Servicio de transferencia de almacenamiento, consulta Comienza a usar las bibliotecas cliente del Servicio de transferencia de almacenamiento.

Java

¿Buscas muestras anteriores? Consulta la Guía de migración del Servicio de transferencia de almacenamiento.

import com.google.protobuf.Duration;
import com.google.storagetransfer.v1.proto.StorageTransferServiceClient;
import com.google.storagetransfer.v1.proto.TransferProto.CreateTransferJobRequest;
import com.google.storagetransfer.v1.proto.TransferTypes.GcsData;
import com.google.storagetransfer.v1.proto.TransferTypes.ObjectConditions;
import com.google.storagetransfer.v1.proto.TransferTypes.Schedule;
import com.google.storagetransfer.v1.proto.TransferTypes.TransferJob;
import com.google.storagetransfer.v1.proto.TransferTypes.TransferJob.Status;
import com.google.storagetransfer.v1.proto.TransferTypes.TransferOptions;
import com.google.storagetransfer.v1.proto.TransferTypes.TransferSpec;
import com.google.type.Date;
import com.google.type.TimeOfDay;
import java.io.IOException;
import java.util.Calendar;

public class TransferToNearline {
  /**
   * Creates a one-off transfer job that transfers objects in a standard GCS bucket that are more
   * than 30 days old to a Nearline GCS bucket.
   */
  public static void transferToNearline(
      String projectId,
      String jobDescription,
      String gcsSourceBucket,
      String gcsNearlineSinkBucket,
      long startDateTime)
      throws IOException {

    // Your Google Cloud Project ID
    // String projectId = "your-project-id";

    // A short description of this job
    // String jobDescription = "Sample transfer job of old objects to a Nearline GCS bucket.";

    // The name of the source GCS bucket to transfer data from
    // String gcsSourceBucket = "your-gcs-source-bucket";

    // The name of the Nearline GCS bucket to transfer old objects to
    // String gcsSinkBucket = "your-nearline-gcs-bucket";

    // What day and time in UTC to start the transfer, expressed as an epoch date timestamp.
    // If this is in the past relative to when the job is created, it will run the next day.
    // long startDateTime =
    //     new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2000-01-01 00:00:00").getTime();

    // Parse epoch timestamp into the model classes
    Calendar startCalendar = Calendar.getInstance();
    startCalendar.setTimeInMillis(startDateTime);
    // Note that this is a Date from the model class package, not a java.util.Date
    Date date =
        Date.newBuilder()
            .setYear(startCalendar.get(Calendar.YEAR))
            .setMonth(startCalendar.get(Calendar.MONTH) + 1)
            .setDay(startCalendar.get(Calendar.DAY_OF_MONTH))
            .build();
    TimeOfDay time =
        TimeOfDay.newBuilder()
            .setHours(startCalendar.get(Calendar.HOUR_OF_DAY))
            .setMinutes(startCalendar.get(Calendar.MINUTE))
            .setSeconds(startCalendar.get(Calendar.SECOND))
            .build();

    TransferJob transferJob =
        TransferJob.newBuilder()
            .setDescription(jobDescription)
            .setProjectId(projectId)
            .setTransferSpec(
                TransferSpec.newBuilder()
                    .setGcsDataSource(GcsData.newBuilder().setBucketName(gcsSourceBucket))
                    .setGcsDataSink(GcsData.newBuilder().setBucketName(gcsNearlineSinkBucket))
                    .setObjectConditions(
                        ObjectConditions.newBuilder()
                            .setMinTimeElapsedSinceLastModification(
                                Duration.newBuilder().setSeconds(2592000 /* 30 days */)))
                    .setTransferOptions(
                        TransferOptions.newBuilder().setDeleteObjectsFromSourceAfterTransfer(true)))
            .setSchedule(Schedule.newBuilder().setScheduleStartDate(date).setStartTimeOfDay(time))
            .setStatus(Status.ENABLED)
            .build();

    // Create a Transfer Service client
    StorageTransferServiceClient storageTransfer = StorageTransferServiceClient.create();

    // Create the transfer job
    TransferJob response =
        storageTransfer.createTransferJob(
            CreateTransferJobRequest.newBuilder().setTransferJob(transferJob).build());

    System.out.println("Created transfer job from standard bucket to Nearline bucket:");
    System.out.println(response.toString());
  }
}

Python

¿Buscas muestras anteriores? Consulta la Guía de migración del Servicio de transferencia de almacenamiento.

from datetime import datetime

from google.cloud import storage_transfer
from google.protobuf.duration_pb2 import Duration


def create_daily_nearline_30_day_migration(
    project_id: str,
    description: str,
    source_bucket: str,
    sink_bucket: str,
    start_date: datetime,
):
    """Create a daily migration from a GCS bucket to a Nearline GCS bucket
    for objects untouched for 30 days."""

    client = storage_transfer.StorageTransferServiceClient()

    # The ID of the Google Cloud Platform Project that owns the job
    # project_id = 'my-project-id'

    # A useful description for your transfer job
    # description = 'My transfer job'

    # Google Cloud Storage source bucket name
    # source_bucket = 'my-gcs-source-bucket'

    # Google Cloud Storage destination bucket name
    # sink_bucket = 'my-gcs-destination-bucket'

    transfer_job_request = storage_transfer.CreateTransferJobRequest(
        {
            "transfer_job": {
                "project_id": project_id,
                "description": description,
                "status": storage_transfer.TransferJob.Status.ENABLED,
                "schedule": {
                    "schedule_start_date": {
                        "day": start_date.day,
                        "month": start_date.month,
                        "year": start_date.year,
                    }
                },
                "transfer_spec": {
                    "gcs_data_source": {
                        "bucket_name": source_bucket,
                    },
                    "gcs_data_sink": {
                        "bucket_name": sink_bucket,
                    },
                    "object_conditions": {
                        "min_time_elapsed_since_last_modification": Duration(
                            seconds=2592000  # 30 days
                        )
                    },
                    "transfer_options": {
                        "delete_objects_from_source_after_transfer": True
                    },
                },
            }
        }
    )

    result = client.create_transfer_job(transfer_job_request)
    print(f"Created transferJob: {result.name}")

Verifica los objetos copiados

Una vez que se complete la transferencia, recomendamos realizar verificaciones adicionales de integridad de los datos.

  • Verifica que los objetos se hayan copiado correctamente verificando los metadatos en los objetos, como sumas de comprobación y tamaño.

  • Verifica que se haya copiado la versión correcta de los objetos. El Servicio de transferencia de almacenamiento ofrece una opción lista para usar que verifica copias. Si habilitaste Registro consulta los registros para verificar si todos los objetos se copiaron con éxito, incluidas sus campos de metadatos correspondientes.

Comienza a usar el bucket de destino

Una vez completada y verificada la migración, actualiza las aplicaciones existentes o cargas de trabajo para que usen el nombre del bucket de destino. Verifica los registros de acceso a los datos. en Registros de auditoría de Cloud para garantizar que tu que las operaciones modifican y leen objetos de forma correcta.

Borra el bucket original

Cuando todo funciona bien, borrar el bucket original

El Servicio de transferencia de almacenamiento ofrece la opción de borrar objetos después de transferirlos mediante la especificación de deleteObjectsFromSourceAfterTransfer: true en la configuración del trabajo o la selección de la opción en la consola de Google Cloud.

Programa la eliminación de objetos

Para programar la eliminación de tus objetos en una fecha posterior, usa una combinación de trabajo de transferencia programado y deleteObjectsUniqueInSink = true de 12 a 1 con la nueva opción de compresión.

El trabajo de transferencia debe configurarse para transferir un bucket vacío al bucket que contiene tus objetos. Esto hace que el Servicio de transferencia de almacenamiento enumere los objetos y comenzar a borrarlos. Como las eliminaciones son una operación solo de metadatos, la transferencia trabajo solo está vinculado a QPS. Para acelerar el proceso, divide la transferencia en varias trabajos, cada uno actuando según un conjunto distinto de prefijos.

Como alternativa, Google Cloud ofrece un programador de trabajos cron administrado. Para obtener más información, consulta Programa un trabajo de transferencia de STS de Google Cloud con Cloud Scheduler.