Descargar archivos y carpetas del depósito de Google Storage a una carpeta local [cerrado]

Respuestas:

150

Eche un vistazo a la herramienta gsutil . Puede usar el comando cp con la opción -R(recursiva) y -m(multiproceso).

gsutil -m cp -R gs://<bucket_name> .

Y si quieres probarlo con un cubo público, prueba

gsutil -m cp -R gs://uspto-pair .

La aceleración otorgada por el subproceso múltiple puede ser bastante significativa:

$ time gsutil cp -R gs://uspto-pair/docs/2010-08-28 .
...

real    0m12.534s

vs

$ time gsutil -m cp -R gs://uspto-pair/docs/2010-08-28 .
...

real    0m3.345s
Sebastián Kreft
fuente
Sugeriría no descargar a ciegas el depósito de pares uspto; hay un montón de documentos allí ...
Cebjyre
1
Algo muy importante aquí es instalar gsutil en su máquina local . Por ejemplo, puede hacerlo instalando el SDK de Google Cloud. Olvidé este paso y seguí usando gsutil en la VM local de mi proyecto como un idiota.
Matthias
¿Es este servicio gratuito o de pago? ¿Como las operaciones de Clase A?
Sudhanshu Gaur
2
Si está descargando una cantidad de archivos grandes desde su depósito en un HDD tradicional (no SSD), no use la -mmarca para subprocesos múltiples. Esto reducirá significativamente el tiempo de respuesta del disco, ya que moverá continuamente las agujas entre los diferentes archivos. Intenté usarlo -mal principio, solo para que el disco se convirtiera en el cuello de botella. Omitir la -mbandera mantendrá la escritura del HDD en la misma ubicación física del disco.
JR
esto es impresionante! Gracias
kninjaboi
67

Para aquellos que quieran evitar la instalación de herramientas locales como gsutil, hay una forma de descargar archivos y carpetas de Google Cloud Storage por completo en el navegador:

  1. Vaya a: https://console.cloud.google.com/storage/browser/BUCKET_NAME
  2. Busque la carpeta / archivo que desea descargar.
  3. En la esquina superior derecha de la página, presione el ícono de código para abrir Cloud Shell.
  4. Cree una carpeta temporal en la máquina virtual de Cloud Shell: mkdir Data
  5. Copie los datos de Cloud Storage a la Datacarpeta temporal :gsutil -m cp -R gs://BUCKET_NAME/FOLDER_OR_FILE_PATH ./Data
  6. Copie los datos en un archivo zip: zip -r Data.zip Data
  7. Descargue el archivo zip ejecutando dl Data.zip, o: abra el menú desplegable "..." en la barra de herramientas, presione "Descargar archivo", escriba Data.zipy presione "Descargar".

Como alternativa a los pasos 6 y 7 (o si desea un archivo tar en lugar de un zip):

. . 6b. Presione el ícono de la computadora (o lápiz) en la barra de herramientas para abrir el explorador del entorno de Cloud Shell en una nueva pestaña.
. . 7b. Haga clic derecho en la Datacarpeta en el navegador de directorios a la izquierda y presione "Descargar". Se descargará un archivo tar en su máquina local, que luego podrá extraer usando 7-Zip o similar.

Venryx
fuente
7
Este funcionó como un encanto para mí, ¡SIN ningún paquete pagado!
nipunasudha
¿Existe un límite de tamaño para la carpeta temporal? Por mi parte, deja de copiar después del 54%. Estoy intentando mover 8,4 GB de imágenes para descargarlas.
hardQuestions
1
@toughQuestions No lo sé; Nunca intenté descargar tanto contenido. Suponiendo que lo haga (a partir de sus comentarios), sugeriría simplemente instalar el programa gsutil en su computadora local y ejecutarlo desde allí: stackoverflow.com/q/39137053
Venryx
Lo probaré, gracias :-)
hardQuestions
1
Hay un límite de 5 GB, por lo que solo es útil para cosas más pequeñas. Aunque Cool Solution.
user32149
16

En caso de que gsutilse produzca una excepción ( CommandException: Wrong number of arguments for "cp" command.), intente lo siguiente:

gsutil -m cp -R gs://BUCKETNAME ./LOCALFOLDERNAME
Lausbert
fuente
¿Es este servicio gratuito o de pago? ¿Como las operaciones de Clase A?
Sudhanshu Gaur
2

En mi caso, lo que funcionó fue navegar al depósito en la interfaz gráfica de usuario del navegador y hacer clic izquierdo en el archivo y "Guardar archivo".
Obviamente, esto es terrible para varios archivos, pero, por supuesto, puede comprimirlos en un solo archivo (usando la consola en la nube de Google).

ver este hilo.

Además, si no tiene un depósito, puede crear uno y luego subirlo usando gcloud console, p. Ej.gsutil cp file.tgz gs://<bucket>

Matías
fuente
2
Me acabo de dar cuenta de por qué la respuesta de Sebastian no funcionó para mí ... por alguna razón, estaba totalmente ciego al hecho de que necesitaba tener instalado gsutil en mi máquina local . Seguí usándolo en la descarga en el navegador de la consola de gcloud en la VM de mi proyecto allí.
Matthias
El shell de gcloud en el navegador admite la descarga de sus archivos vm en su máquina local, por lo que en realidad no necesita instalar gsutilen su máquina local: stackoverflow.com/a/59567734/2441655
Venryx
@Dilvane de alguna manera -m opción no funciona para mí ... pero -r hace lo siguiente ... bharathkumarraju @ R77-NB193 raju% gsutil cp -r gs: // testbucket. Copiando gs: //testbucket/asset-manifest.json ...
BharathKumarRaju Dasararaju
2

Esto es lo que funcionó para mí:

Paso 1: instale gsutil en su máquina local: https://cloud.google.com/storage/docs/gsutil_install?hl=fr

Paso 2: copie archivos del depósito a su máquina local ejecutando el comando:gsutil cp [-r if repository] gs://[BUCKET_NAME]/[OBJECT_NAME] [OBJECT_DESTINATION_IN_LOCAL]

HLeb
fuente