En esta página, se proporciona una descripción general de las carpetas en Cloud Storage.
Descripción general de las carpetas
A excepción de las carpetas administradas, Cloud Storage opera con un espacio de nombres fijo, lo que significa que las carpetas no existen dentro de Cloud Storage. Si creas un objeto llamado folder1/file.txt
en el bucket your-bucket
, la ruta al objeto es your-bucket/folder1/file.txt
, pero no hay una carpeta llamada folder1
. en su lugar, la cadena folder1
es parte del nombre del objeto.
Sin embargo, la consola de Google Cloud y las CLI de Cloud Storage proporcionan la ilusión de un árbol jerárquico de archivos:
La consola de Google Cloud crea una representación visual de las carpetas que son similares a un navegador de archivos local.
Las CLI de Cloud Storage simulan la experiencia típica del directorio de línea de comandos con una variedad de reglas.
Herramientas
Haz clic en las pestañas a continuación para ver cómo cada herramienta maneja las carpetas.
Console
En la consola de Google Cloud, puedes crear una carpeta vacía en un bucket o subir una carpeta existente.
Cuando subes una carpeta existente, el nombre de la carpeta se vuelve parte de la ruta de acceso para todos los objetos contenidos en la carpeta. Todas las subcarpetas y los objetos que contienen también se incluyen en la carga.
Para crear una carpeta, haz lo siguiente:
- En la consola de Google Cloud, ve a la página Buckets de Cloud Storage.
Navega al bucket.
Haz clic en Crear carpeta para crear una carpeta nueva vacía o en Subir carpeta para subir una existente.
Línea de comandos
Para lograr la ilusión de un árbol jerárquico de archivos, los comando sgcloud storage
y gsutil
aplican las siguientes reglas para determinar si la URL de destino en un comando debe tratarse como un nombre de objeto o una carpeta:
Si la URL de destino termina con un carácter
/
, los comandos de la CLI tratan la URL de destino como una carpeta. Por ejemplo, observa el siguiente comando, en el queyour-file
es el nombre de un archivo:gcloud storage cp your-file gs://your-bucket/abc/
Como resultado de este comando, Cloud Storage crea un objeto llamado
abc/your-file
en el bucketyour-bucket
.Si copias varios archivos fuente a una URL de destino, las CLI tratan la URL de destino como una carpeta. Por ejemplo, observa el siguiente comando, en el que
your-dir
es una carpeta que contiene archivos comofile1
yfile2
:gcloud storage cp your-dir gs://your-bucket/abc --recursive
Como resultado de este comando, Cloud Storage crea los objetos
abc/your-dir/file1
yabc/your-dir/file2
en el bucketyour-bucket
.Si no se aplica ninguna de las reglas anteriores, las CLI verifican los objetos del bucket para determinar si la URL de destino es un nombre de objeto o una carpeta. Por ejemplo, observa el siguiente comando, en el que
your-file
es el nombre de un archivo:gcloud storage cp your-file gs://your-bucket/abc
La CLI realiza una solicitud de enumeración de objetos para
your-bucket
, con el delimitador/
y el prefijo=abc
, para determinar si hay objetos enyour-bucket
cuya ruta de acceso comienza conabc/
. Si es así, la CLI trata aabc/
como un nombre de carpeta y el comando anterior crea el objetoabc/your-file
en el bucketyour-bucket
. De lo contrario, la CLI crea el objetoabc
enyour-bucket
.
Este enfoque basado en reglas es diferente a la forma en que funcionan muchas herramientas, que crean objetos de 0 bytes para marcar la existencia de carpetas. Las CLI de Cloud Storage comprenden varias de las convenciones que usan estas herramientas, como la convención de agregar _$folder$
al final del nombre del objeto de 0 bytes, pero las CLI no requieren esos objetos de marcador para implementar un comportamiento de nombres coherente con los comandos de UNIX.
Reintentos y nombres
Cuando una CLI de Cloud Storagevuelve a intentar una solicitud interrumpida, puede ocurrir un problema en el que el primer intento copia un subconjunto de archivos y los intentos posteriores encuentran una carpeta de destino existente, lo que hace que los objetos se nombren de forma incorrecta.
Por ejemplo, considera el siguiente comando, en el que hay subcarpetas en your-dir/
como dir1
y dir2
, y ambas subcarpetas contienen el archivo abc
:
gcloud storage cp ./your-dir gs://your-bucket/new --recursive
Si la ruta de acceso gs://your-bucket/new
aún no existe, las CLI crean los siguientes objetos en el primer intento exitoso:
new/dir1/abc new/dir2/abc
Sin embargo, en el siguiente intento exitoso del mismo comando, las CLI crean los siguientes objetos:
new/your-dir/dir1/abc new/your-dir/dir2/abc
Para que las CLI funcionen de forma coherente en cada intento, prueba lo siguiente:
Agrega una barra al final de la URL de destino para que las CLI siempre la traten como una carpeta.
Usa
gcloud storage rsync
ogsutil rsync
. Dado quersync
no usa las reglas de nombres de carpetas definidas por cp de Unix, funciona con coherencia si la subcarpeta de destino existe o no.
Para obtener más información acerca de cómo se construyen los nombres, consulta construcción de nombres a través de cp
.
Notas adicionales
No puedes crear un objeto de cero bytes para imitar una carpeta vacía a través de las CLI de Cloud Storage.
Si usas secuencias de comandos para compilar rutas de acceso a archivos a través de la combinación de rutas secundarias, ten en cuenta que, debido a que
/
es solo un carácter que está en nombre del objeto, las CLI interpretan quegs://my-bucket/folder/
es un objeto diferente degs://my-bucket//folder
.
API de REST
API de JSON
Las carpetas no existen en la API de JSON. Para limitar los objetos que listas, usa los parámetros de búsqueda prefix
y delimiter
.
Por ejemplo, para enumerar todos los objetos en el bucket my-bucket
con el prefijo folder/subfolder/
, realiza una solicitud de listado de objetos con esta URL:
"https://storage.googleapis.com/storage/v1/b/my-bucket/o?prefix=folder/subfolder/"
API de XML
Las carpetas no existen en la API de XML, pero puedes reducir los objetos que listas a través de prefix
y los parámetros de búsqueda delimiter
.
Por ejemplo, para enumerar todos los objetos en el bucket my-bucket
con el prefijo folder/subfolder/
, realiza una solicitud de listado de objetos con esta URL:
"https://storage.googleapis.com/my-bucket?prefix=folder/subfolder/"
¿Qué sigue?
Subir objetos a un bucket de Cloud Storage.
Obtén más información sobre las carpetas administradas.