El Servicio de transferencia de Storage admite la transferencia de archivos u objetos específicos, que se especifican mediante un manifiesto. Un manifiesto es un archivo CSV que se sube a Cloud Storage y que contiene una lista de archivos u objetos sobre los que debe actuar Storage Transfer Service.
Se puede usar un manifiesto para las siguientes transferencias:
Desde AWS S3, almacenamiento compatible con S3, Azure Blobstore o Cloud Storage a un segmento de Cloud Storage.
De un sistema de archivos a un segmento de Cloud Storage.
De un segmento de Cloud Storage a un sistema de archivos.
Entre dos sistemas de archivos.
De una fuente HTTP o HTTPS de acceso público a un segmento de Cloud Storage. Sigue las instrucciones de la sección Crear una lista de URLs, ya que el formato del manifiesto es único para las listas de URLs.
Crear un archivo de manifiesto
Los archivos de manifiesto deben cumplir los siguientes requisitos:
- Los manifiestos deben estar en formato CSV.
- Pueden contener cualquier carácter UTF-8.
- La primera columna debe ser un nombre de archivo o de objeto. El nombre es relativo a la ruta raíz o al bucket y la carpeta especificados en el trabajo de transferencia. Para obtener más información, consulta las secciones Transferencias de sistemas de archivos y Transferencias de almacenamiento de objetos.
- Los archivos de manifiesto no admiten comodines. No se admiten nombres de carpetas sin nombre de archivo ni de objeto.
- Si el nombre de un archivo o un objeto contiene una coma, debe incluirse entre comillas dobles. Por ejemplo,
"doe,john.txt"
. - En el caso de las transferencias que usan agentes de transferencia (es decir, transferencias de sistemas de archivos o transferencias desde almacenamiento compatible con S3), el tamaño máximo del archivo de manifiesto es de 1 GiB, lo que equivale a aproximadamente 1 millón de filas. Si el archivo de manifiesto tiene un tamaño superior a 1 GiB, puede dividirlo en varios archivos y ejecutar varios trabajos de transferencia. En el caso de las transferencias sin agente, no hay límite de tamaño para el archivo de manifiesto.
Te recomendamos que pruebes la transferencia con un pequeño subconjunto de archivos u objetos para evitar llamadas a la API innecesarias debido a errores de configuración.
Puede monitorizar el estado de las transferencias de archivos desde la página Trabajos de transferencia. Los archivos u objetos que no se hayan podido transferir se mostrarán en los registros de transferencia.
Transferencias del sistema de archivos
Para crear un manifiesto de archivos en un sistema de archivos, crea un archivo CSV con una sola columna que contenga las rutas de los archivos relativas al directorio raíz especificado al crear el trabajo de transferencia.
Por ejemplo, para transferir los siguientes archivos del sistema de archivos:
Ruta del archivo |
---|
rootdir/dir1/subdir1/file1.txt |
rootdir/file2.txt |
rootdir/dir2/subdir1/file3.txt |
El archivo de manifiesto debería tener un aspecto similar al siguiente ejemplo:
dir1/subdir1/file1.txt
file2.txt
dir2/subdir1/file3.txt
Guarda el archivo de manifiesto con el nombre que quieras y la extensión .csv
.
Transferencias de almacenamiento de objetos
Para crear un manifiesto de objetos, cree un archivo CSV cuya primera columna contenga los nombres de los objetos en relación con el nombre y la ruta del contenedor especificados al crear el trabajo de transferencia. Todos los objetos deben estar en el mismo contenedor.
También puede especificar una segunda columna opcional con el número de generación de Cloud Storage de la versión específica que quiera transferir.
Por ejemplo, puede que quieras transferir los siguientes objetos:
Ruta de objeto | Número de generación de Cloud Storage |
---|---|
SOURCE_PATH/object1.pdf |
1664826685911832 |
SOURCE_PATH/object2.pdf |
|
SOURCE_PATH/object3.pdf |
1664826610699837 |
El archivo de manifiesto debería tener un aspecto similar al siguiente ejemplo:
object1.pdf,1664826685911832
object2.pdf
object3.pdf,1664826610699837
Guarda el archivo de manifiesto con el nombre que quieras y la extensión .csv
.
Transferencias HTTP/HTTPS
Para transferir archivos específicos de una fuente HTTP o HTTPS, consulta las instrucciones de Crear una lista de URLs.
Publicar el manifiesto
Una vez que haya creado el archivo de manifiesto, debe ponerlo a disposición de Storage Transfer Service. Storage Transfer Service puede acceder al archivo en un segmento de Cloud Storage o en tu sistema de archivos.
Sube el manifiesto a Cloud Storage
Puede almacenar el archivo de manifiesto en cualquier segmento de Cloud Storage.
El agente de servicio que ejecuta la transferencia debe tener permiso storage.objects.get
para el cubo que contiene el manifiesto. Consulta la sección Conceder los permisos necesarios para obtener instrucciones sobre cómo encontrar el ID del agente de servicio y conceder permisos a ese agente en un segmento.
Para obtener instrucciones sobre cómo subir el manifiesto a un segmento, consulta el artículo Subir objetos de la documentación de Cloud Storage.
Por ejemplo, para usar la CLI de gcloud
para subir un archivo a Cloud Storage, usa el comando gcloud storage cp
:
gcloud storage cp MANIFEST.CSV gs://DESTINATION_BUCKET_NAME/
Donde:
MANIFEST.CSV
es la ruta local a tu archivo de manifiesto. Por ejemplo,Desktop/manifest01.csv
.DESTINATION_BUCKET_NAME
es el nombre del contenedor al que subes el objeto. Por ejemplo,my-bucket
.
Si la acción se realiza correctamente, la respuesta se parecerá al siguiente ejemplo:
Completed files 1/1 | 164.3kiB/164.3kiB
Puedes encriptar un manifiesto con claves de encriptado de Cloud KMS gestionadas por el cliente. En este caso, asegúrate de que las cuentas de servicio que accedan al manifiesto tengan asignadas las claves de cifrado correspondientes. No se admiten claves proporcionadas por el cliente.
Almacenar el manifiesto en un sistema de archivos
Puede almacenar el archivo de manifiesto en el sistema de archivos de origen o de destino.
Los agentes de transferencia deben poder acceder a la ubicación del archivo. Si restringes el acceso a los directorios de tus agentes, asegúrate de que el archivo de manifiesto se encuentre en un directorio montado.
Iniciar una transferencia
No modifiques el archivo de manifiesto hasta que se complete una operación de transferencia. Te recomendamos que bloquees el archivo de manifiesto cuando se esté realizando una transferencia.
consola de Cloud
Para iniciar una transferencia con un manifiesto desde la consola de Cloud, sigue estos pasos:
Sigue las instrucciones de Crear transferencias para seleccionar la fuente, el destino y las opciones.
En el último paso, Elegir configuración, marca la casilla Proporcionar lista de archivos que se van a transferir mediante un archivo de manifiesto.
Introduce la ubicación del archivo de manifiesto.
gcloud
Para transferir los archivos u objetos que se enumeran en el manifiesto, incluya la marca --manifest-file=MANIFEST_FILE
con el comando gcloud transfer jobs create
.
gcloud transfer jobs create SOURCE DESTINATION \
--manifest-file=MANIFEST_FILE
MANIFEST_FILE puede ser cualquiera de los siguientes valores:
Ruta al archivo CSV en un segmento de Cloud Storage:
--manifest-file=gs://my_bucket/sample_manifest.csv
Consulta Subir el archivo de manifiesto a Cloud Storage para obtener información sobre los permisos necesarios si el segmento o el archivo no son públicos.
La ruta relativa del sistema de archivos SOURCE, incluida cualquier ruta que se haya especificado:
--manifest-file=source://relative_path/sample_manifest.csv
La ruta relativa del sistema de archivos DESTINATION, incluida cualquier ruta que se haya especificado:
--manifest-file=destination://relative_path/sample_manifest.csv
REST + bibliotecas de cliente
REST
Para transferir los archivos u objetos que se indican en el manifiesto, haz una llamada a la API createTransferJob
que especifique un transferSpec
con el campo transferManifest
añadido. Por ejemplo:
POST https://storagetransfer.googleapis.com/v1/transferJobs ... "transferSpec": { "posixDataSource": { "rootDirectory": "/home/", }, "gcsDataSink": { "bucketName": "GCS_NEARLINE_SINK_NAME", "path": "GCS_SINK_PATH", }, "transferManifest": { "location": "gs://my_bucket/sample_manifest.csv" } }
El archivo de manifiesto se puede almacenar en un segmento de Cloud Storage o en el sistema de archivos de origen o de destino. Los segmentos de Cloud Storage deben usar el prefijo gs://
e incluir la ruta completa, incluido el nombre del segmento. Las ubicaciones del sistema de archivos deben usar el prefijo source://
o destination://
y son relativas al origen o al destino del sistema de archivos, así como al directorio raíz opcional.
Go
Java
Node.js
Python
Los objetos o archivos del manifiesto no se transfieren necesariamente en el orden indicado.
Si el manifiesto incluye archivos que ya existen en el destino, se omitirán a menos que se especifique la opción overwrite objects already existing in sink (sobrescribir objetos que ya existen en el receptor).
Si el archivo de manifiesto incluye objetos que existen en una versión diferente en el destino, el objeto del destino se sobrescribe con la versión de origen del objeto. Si el destino es un segmento con versiones, se crea una nueva versión del objeto.
Siguientes pasos
- Consulte cómo filtrar objetos de transferencias.
- Consulta cómo programar trabajos de transferencia.