Filtra objetos de origen con comodines

Los trabajos del Servicio de transferencia de almacenamiento admiten cadenas de búsqueda con caracteres comodín, como * y ?, para que coincidan con nombres de archivos o rutas. Estas cadenas de búsqueda se denominan patrones glob.

Puedes usar patrones glob para especificar qué objetos de origen se incluirán en una transferencia. Esto permite un control más detallado que el filtrado solo por prefijo.

Se admite el filtrado con patrones glob para las transferencias desde AWS S3 y Azure.

Sintaxis de glob

Un patrón glob usa la siguiente sintaxis para hacer coincidir rutas de acceso a objetos:

Sintaxis Descripción
? Coincide con cualquier carácter, excepto /.
* Coincide con cero o más caracteres, excepto /.
** Coincide con cero o más caracteres, incluido /.
[abc] Coincide exactamente con uno de los caracteres (p.ej., a, b o c).
[a-z] Coincide con exactamente un carácter en el rango inclusivo (p.ej., a a z).
[!abc] o [^abc] Coincide exactamente con un carácter que no sea a, b o c.
{abc,xyz} Coincide con una de las cadenas (p.ej., abc o xyz). No puede contener barras diagonales (/) ni asteriscos dobles (**).
\? Coincide con el carácter literal después de la barra inversa (p.ej., \? coincide con un ? literal).

Patrones de ejemplo

Coincide con todos los archivos .log de los directorios december:

logs_by_year/**/december/*.log

Transfiere todos los archivos del directorio data_analytics/ que no comiencen con un . (punto) o _ (guion bajo):

data_analytics/[!._]*

Para que el ejemplo anterior sea recursivo, haz lo siguiente:

data_analytics/**/[!._]*

Transfiere todos los archivos PDF de exactamente dos directorios específicos:

quarterly_reports/2025/{q1-final,q4-final}/*.pdf

Cómo especificar un patrón glob

Puedes especificar un patrón glob cuando creas o actualizas un trabajo de transferencia.

gcloud CLI

Para filtrar por patrón de comodines con la CLI de gcloud, pasa la marca --match-glob al comando gcloud transfer jobs create o gcloud transfer jobs update:

gcloud transfer jobs create SOURCE DESTINATION \
  --match-glob="GLOB_PATTERN"

Ejemplo:

El siguiente comando crea un trabajo que solo transfiere archivos .log de los directorios december:

gcloud transfer jobs create s3://my-source-bucket gs://my-sink-bucket \
  --match-glob="logs_by_year/**/december/*.log"

REST

Para filtrar por patrón de comodín con la API de REST, especifica el campo matchGlob en el objectConditions de tu transferSpec.

{
  "description": "Transfer December logs from all years",
  "status": "ENABLED",
  "projectId": "PROJECT_ID",
  "transferSpec": {
    "awsS3DataSource": {
      "bucketName": "AWS_SOURCE_NAME",
      "awsAccessKey": {
        "accessKeyId": "AWS_ACCESS_KEY_ID",
        "secretAccessKey": "AWS_SECRET_ACCESS_KEY"
      }
    },
    "gcsDataSink": {
      "bucketName": "DESTINATION_BUCKET"
    },
    "objectConditions": {
      "matchGlob": "logs_by_year/**/december/*.log"
    }
  }
}

Para obtener más información, consulta la referencia ObjectConditions.

Consola de Google Cloud

El filtrado por patrón de comodines no es compatible con la consola de Google Cloud.

Interacción con otros filtros

Cuando usas un filtro de patrón de comodín con filtros de prefijo o filtros de hora de última modificación, el Servicio de transferencia de almacenamiento aplica los filtros en el siguiente orden:

  1. Incluir prefijos: Reduce la cantidad de objetos que se deben tener en cuenta.

  2. Condiciones del objeto (patrón glob y hora de última modificación): Filtra los objetos que coincidieron con el prefijo de inclusión. Un objeto debe coincidir con el filtro de comodín y el filtro de hora de última modificación para incluirse en el resultado.

  3. Excluir prefijos: Quita objetos del resultado.

Obtén más información para filtrar por prefijo y filtrar por hora de última modificación.

Incluir prefijos

El patrón glob solo se aplica a los objetos que coinciden con al menos un prefijo de inclusión.

El Servicio de transferencia de almacenamiento muestra un error si tu patrón glob contradice todos los patrones de prefijo de inclusión.

Ejemplo: Combinación válida

  • include_prefix: ["foo/"]
  • match_glob: "foo/bar/**"

Resultado: Válido. Primero, el servicio enumera los objetos en foo/ y, luego, aplica el patrón glob a esa lista.

Ejemplo: Combinación válida

  • include_prefix: ["logs/2024/", "logs/2025/"]
  • match_glob: "**/*.json"

Resultado: Válido. El servicio enumera todos los objetos en los directorios 2024 y 2025 y, luego, transfiere solo los archivos que terminan en .json.

Ejemplo: Contradicción

  • include_prefix: ["foo/"]
  • match_glob: "bar/**"

Resultado: Error. El patrón match_glob no puede coincidir con ningún objeto seleccionado por include_prefix.

Excluir prefijos

El filtro de prefijo de exclusión se aplica después del filtro de prefijo de inclusión y del filtro de patrón glob.

No se realiza ninguna verificación de contradicción. Cualquier objeto que coincida con un prefijo de exclusión se quita de la lista de transferencia, incluso si coincide con el patrón glob.

Ejemplo

  • include_prefix: ["logs/"]
  • match_glob: "**/*.log"
  • exclude_prefix: ["logs/temp/"]

Resultado: El servicio transfiere todos los objetos en logs/ que terminan con .log, excepto los que se encuentran en el directorio logs/temp/.