es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Método de Google Cloud Shell para mover una gran cantidad de archivos basados en un rango de números de archivos?

Realicé una copia de seguridad de una tabla de Big Query en archivos JSON en un depósito de Google Cloud. Hay aproximadamente 90.000 archivos JSON, que en total suman 19TiB.

Quiero restaurar esta copia de seguridad a una tabla de Big Query. Sin embargo, el comando BQ Load tiene un límite máximo de 15TiB, por lo que estoy intentando dividir los archivos de copia de seguridad en 2 depósitos y ejecutar 2 trabajos de carga de BQ, un trabajo de carga de BQ en cada depósito.

¿Cómo podría copiar aproximadamente la mitad de los 90.000 archivos JSON a un nuevo depósito?

Los nombres de archivo se ven así:

gs://mybackupbucket/table-000000000000.json

gs://mybackupbucket/table-000000000038.json
gs://mybackupbucket/table-000000000039.json
gs://mybackupbucket/table-000000000040.json

gs://mybackupbucket/table-000000088921.json

Intenté:

gsutil -m mv gs://mybackupbucket/table-0000000{00001-45000}.json gs://mybackupbucket2/

Pero eso no funcionó.

También intenté:

gsutil -m mv gs://mybackupbucket/*[00000-45000].json gs://mybackupbucket2/

Eso parecía copiar todos los archivos con un número del 0 al 5 al final. Entonces, los archivos que terminaban en 0-5, 10-15, 20-25, 30-35, etc.

¿Cómo puedo mover los archivos numerados del 0 al 45000?

Logré dividir los archivos de una manera poco convencional (*[7000].json parecía copiar números que terminaban en 7, lo que hizo que ambos depósitos estuvieran por debajo del límite de 15TiB), pero sería genial poder decir simplemente “copia los primeros 45000 archivos”. Muchas gracias.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para copiar los primeros 45,000 archivos del depósito original a un nuevo depósito, puedes utilizar el siguiente comando gsutil:

    gsutil -m cp gs://mybackupbucket/table-{000000000000..000000000449}.json gs://mynewbucket/
    

    Esto copiará todos los archivos numerados desde 000000000000 hasta 000000000449, lo cual equivale a los primeros 45,000 archivos, al nuevo depósito especificado por el parámetro gs://mynewbucket/.

    Ten en cuenta que la opción -m se utiliza para ejecutar el comando en paralelo, lo cual puede acelerar el proceso de copiado para un gran número de archivos.

    Una vez que hayas copiado los archivos al nuevo depósito, puedes ejecutar el trabajo de carga de BQ en este nuevo depósito para restaurar los datos de respaldo en una tabla de Big Query.

Comments are closed.