Sevilla, España
Sevilla, España
+(34) 624 816 969
Vivimos pegados a interfaces gráficas. Hacemos clic, arrastramos, soltamos. Y para la mayoría de las tareas, está genial. Abrir el panel de Google Cloud, navegar hasta tu bucket de Storage y subir esa imagen de cabecera... es cómodo.
Pero, ¿qué pasa cuando no es una imagen, sino 10.000 logs? ¿O cuando tienes que desplegar los 4.500 archivos de una build de React? ¿O cuando quieres hacer una copia de seguridad de tu servidor local cada noche a las 3:00 AM?
Ahí, la interfaz web se convierte en un cuello de botella. Es lenta, es manual y es propensa a errores.
Últimamente se ve mucho en foros y comunidades de DevOps: la gente está volviendo a la terminal para gestionar la nube. Y no es por nostalgia hacker. Es por pura y dura eficiencia.
Aquí es donde entra en juego el Google Cloud CLI (o "gcloud", como lo llamamos los amigos). Es la navaja suiza que te permite hablar directamente con los servicios de Google, y hoy vamos a centrarnos en su comando estrella para almacenamiento: gcloud storage.
Tabla de contenidos [Mostrar]
Entiendo la duda. Si la web de Google Cloud funciona, ¿para qué complicarse?
Ayer mismo me topé con esta situación: necesitaba descargar unos 20 GB de assets de un bucket de un cliente para un análisis local. Intentarlo por la web habría sido una locura; múltiples archivos .zip, descargas fallidas y una pérdida de tiempo monumental. Con el CLI fue una sola línea de comando. Me fui a por un café y, al volver, el trabajo estaba hecho.
La verdadera magia del CLI no es solo la velocidad, es la automatización.
gcloud storage y listo.
Antes de lanzar hechizos, necesitas la varita. El Google Cloud CLI (o SDK) no viene preinstalado en tu sistema (a menos que uses Google Cloud Shell, pero la gracia es usarlo desde tu máquina).
No voy a replicar la guía de instalación oficial porque es excelente y varía según uses Windows, macOS o Linux. La encuentras buscando "Install Google Cloud SDK".
Una vez instalado, el comando más importante de tu vida será:
Bash
gcloud init
Esto es el "login". Al ejecutarlo, se abrirá una ventana de tu navegador pidiéndote que inicies sesión con tu cuenta de Google (la que tiene acceso a tus proyectos de Cloud). Una vez lo hagas, la terminal te preguntará a qué proyecto quieres "conectarte" por defecto.
Elige el proyecto donde tengas tus buckets de Google Cloud Storage (GCS) y listo. Tu terminal local ahora tiene "superpoderes" sobre tu cuenta de nube.
Un pro-tip: Si manejas múltiples proyectos, puedes ver en cuál estás con gcloud config list y cambiarlo con gcloud config set project [TU_OTRO_PROJECT_ID].
En Google Cloud Storage no hay "carpetas" y "archivos" en el sentido estricto, aunque lo parezca. La terminología es clave:
gs://. Ejemplo: gs://forgenex-backups-clientes..jpg, un .zip o un .log, es un "objeto".gs://mi-bucket/fotos/playa.jpg no está en la carpeta "fotos"; el nombre completo del objeto es fotos/playa.jpg. Es un detalle sutil, pero importante para entender cómo funciona el CLI.
El equipo de Google hizo algo muy inteligente: si vienes del mundo Linux, los comandos te sonarán muchísimo. El comando principal es gcloud storage, que es el sustituto moderno del antiguo gsutil. (Si ves tutoriales antiguos con gsutil, que sepas que gcloud storage es el nuevo estándar y funciona casi igual).
Vamos a ver los equivalentes a ls, cp, mv y rm.
ls)
Es el "a ver qué tengo aquí".
Para ver todos tus buckets (como ver tus discos duros):
Bash
gcloud storage ls
Salida: gs://mi-bucket-de-pruebas/ gs://mi-web-estatica/ gs://backups-servidor-prod/
Para ver el contenido de un bucket:
Bash
gcloud storage ls gs://mi-web-estatica/
Salida: gs://mi-web-estatica/index.html gs://mi-web-estatica/style.css gs://mi-web-estatica/assets/
Para ver el contenido recursivamente (el ls -R de toda la vida):
Bash
gcloud storage ls -r gs://mi-web-estatica/
Salida: gs://mi-web-estatica/index.html gs://mi-web-estatica/style.css gs://mi-web-estatica/assets/ gs://mi-web-estatica/assets/logo.png gs://mi-web-estatica/assets/fondo.jpg
cp)
Este es el caballo de batalla. Sirve para subir, descargar y mover cosas entre buckets.
Subir un archivo local a un bucket:
Bash
# Sintaxis: gcloud storage cp [ARCHIVO_LOCAL] [DESTINO_EN_LA_NUBE]
gcloud storage cp ./informe-final.pdf gs://mi-bucket-de-pruebas/documentos/
Descargar un archivo del bucket a tu PC: (Fíjate en el punto . al final, que significa "aquí, en la carpeta actual").
Bash
# Sintaxis: gcloud storage cp [OBJETO_EN_LA_NUBE] [DESTINO_LOCAL]
gcloud storage cp gs://mi-bucket-de-pruebas/documentos/informe-final.pdf .
Copiar un archivo de un bucket a otro: Esto es increíblemente rápido, porque la transferencia ocurre dentro de la red de Google, no pasa por tu PC.
Bash
gcloud storage cp gs://bucket-origen/video.mp4 gs://bucket-destino/videos/
Subir una carpeta entera (recursivo): Aquí es donde empezamos a ver la potencia. Para subir todo lo que hay en tu carpeta local mi-proyecto/ a la nube:
Bash
gcloud storage cp -r ./mi-proyecto/ gs://mi-bucket-de-pruebas/proyecto-backup/
mv)
Funciona exactamente igual que cp, pero borra el origen después de copiar. Se usa principalmente para renombrar o mover archivos dentro de la nube.
Para renombrar un archivo (que, recuerda, es "moverlo" a un nombre nuevo):
Bash
gcloud storage mv gs://mi-bucket/foto_vieja.jpg gs://mi-bucket/foto_nueva_PERFIL.jpg
Para mover un archivo a otra "carpeta" (prefijo) dentro del mismo bucket:
Bash
gcloud storage mv gs://mi-bucket/informe.pdf gs://mi-bucket/documentos_privados/informe.pdf
rm)
El comando peligroso. Úsalo con respeto.
¡OJO! Esto no va a la papelera de reciclaje. No hay "Ctrl+Z". Si borras un objeto, se borra para siempre (a menos que tengas el versionado de objetos activado en el bucket, pero esa es otra historia).
Borrar un solo archivo:
Bash
gcloud storage rm gs://mi-bucket/logs/log_temporal_001.txt
Borrar una "carpeta" entera y todo su contenido (recursivo): El comando que da miedo ejecutar.
Bash
gcloud storage rm -r gs://mi-bucket/proyecto-antiguo/
rsync (Sincronización Mágica)
Si cp -r es genial, rsync (o gcloud storage rsync) es pura magia.
Si has usado rsync en Linux o Robocopy en Windows, ya sabes de qué va esto. Si no, prepárate: rsync compara un directorio local con uno en la nube y solo transfiere los archivos que han cambiado, que son nuevos o que faltan.
Imagina que tienes una carpeta local (./mi-web/build/) con 5.000 archivos que componen tu web estática. La subes con cp -r. Mañana, cambias un solo archivo CSS. ¿Vas a volver a subir los 5.000 archivos con cp -r? ¡No!
Usas rsync:
Bash
gcloud storage rsync ./mi-web/build/ gs://mi-web-estatica/
gcloud escaneará ambas ubicaciones, verá que 4.999 archivos son idénticos (comparando checksums) y solo subirá el archivo CSS que cambiaste. Es la base de cualquier despliegue moderno de front-end o de backups eficientes.
El modificador rsync más útil (y peligroso): -d (delete)
Por defecto, rsync solo añade y actualiza. Si borras un archivo en tu carpeta local, no se borra en el bucket. Si quieres que el bucket sea un espejo exacto (y que borre en destino lo que ya no existe en origen), usas -d:
Bash
# Sincroniza y borra en el bucket los archivos que ya no tengas en local
gcloud storage rsync -d ./mi-web/build/ gs://mi-web-estatica/
Esto es perfecto para builds de producción, donde no quieres que se queden archivos "huérfanos" de versiones anteriores.
¿Cuánto ocupa mi bucket? (du) Google te cobra por almacenamiento. Para saber cuánto te está costando ese bucket de logs que nunca limpias, usa du (disk usage).
Bash
# -s (summary) y -h (human-readable: KB, MB, GB)
gcloud storage du -sh gs://mi-bucket-grande/
Salida: 14.85 GiB gs://mi-bucket-grande/
*, **, ?) como en cualquier terminal.Subir solo los archivos .log de la carpeta actual:
Bash
gcloud storage cp ./*.log
gs://mi-bucket/logs/
Descargar todos los .jpg de CUALQUIER subcarpeta (el doble ** es el comodín recursivo):
Bash
gcloud storage cp gs://mi-bucket/fotos/**.jpg ./descargas-locales/
Empezar con el CLI de Google Cloud puede dar un poco de vértigo. La interfaz web es cómoda y visual. Pero en el momento en que necesitas velocidad, repetición y automatización, la terminal no tiene rival.
No se trata de abandonar la web (es fantástica para explorar y para configurar permisos complejos), sino de entender que para el trabajo pesado, el scripting y las tareas de administración del día a día, gcloud storage es tu mejor aliado. Es la diferencia entre "hacer" el trabajo y "automatizar" el trabajo.
Y en el mundo de IT, como bien sabemos en ForgeNEX, lo segundo es siempre el objetivo.