Filtrar objetos de transferencias

En este documento, se muestra cómo filtrar objetos de transferencias mediante includePrefix y excludePrefix.

Descripción general

Puedes usar includePrefix y excludePrefix cuando creas transferencias de manera programática para limitar en qué objetos opera el Servicio de transferencia de almacenamiento. includePrefix y excludePrefix son campos opcionales que puedes especificar en tu TransferSpec cuando creas una transferencia. Un valor includePrefix especifica rutas específicas para incluir en una transferencia y excludePrefix especifica rutas específicas que se deben excluir.

Si una ruta de acceso incluye los objetos que deseas transferir y los que no deseas transferir, puedes usar includePrefix y excludePrefix juntos para especificar qué objetos deseas transferir.

Ejemplos de objetos y rutas

En los ejemplos de este documento se usan los siguientes objetos y las siguientes rutas de muestra:

object_1
object_2
path_1/object_3/
path_2/object_4
path_1/subpath_1/object_5
path_1/subpath_2/object_6
path_2/subpath_3/object_7
path_2/subpath_4/object_8

Incluye rutas de acceso

Puedes usar includePrefix cuando crees una transferencia para indicarle al Servicio de transferencia de almacenamiento que debe considerar los objetos en las rutas enumeradas para la transferencia, así como ignorar los objetos que no están en esas rutas.

Por ejemplo, para incluir objetos en path_1/, pasa includePrefix a lo siguiente:

includePrefix: "path_1/"

Esto incluye objetos directamente en path_1/, path_1/subpath_1 y path_1/subpath_2/. Los siguientes objetos se incluyen en la transferencia:

path_1/object_3
path_1/subpath_1/object_5
path_1/subpath_2/object_6

También puedes especificar rutas específicas para incluir. Por ejemplo, puedes pasar includePrefix de la siguiente manera:

includePrefix: "path_1/subpath_2/", "path_1/subpath_3/"

En este caso, la transferencia incluye los siguientes objetos:

path_1/subpath_2/object_6
path_2/subpath_3/object_7

Cuando usas includePrefix, las rutas de acceso que no incluyas de forma específica no se transfieren al bucket de destino de Cloud Storage.

Excluye rutas de acceso

Si usas excludePrefix cuando se crea una transferencia, se le indica al Servicio de transferencia de almacenamiento que ignore las rutas enumeradas para la transferencia.

Para excluir objetos en path_1/, pasa excludePrefix a lo siguiente:

excludePrefix: "path_1/"

Esto excluye los objetos en path_1/, path_1/subpath_1/ y path_1/subpath_2/. En este caso, se incluyen los siguientes objetos en la transferencia:

object_1
object_2
path_2/object_4
path_2/subpath_3/object_7
path_2/subpath_4/object_8

También puedes especificar rutas particulares para excluir. Por ejemplo, puedes pasar excludePrefix de la siguiente manera:

excludePrefix: "path_1/subpath_2/", "path_2/subpath_3/"

En este caso, la transferencia incluye los siguientes objetos:

object_1
object_2
path_1/object_3
path_2/object_4
path_1/subpath_1/object_5
path_2/subpath_4/object_8

Incluye y excluye rutas de acceso de manera simultánea

Puedes aplicar un excludePrefix y un includePrefix juntos, en cuyo caso el excludePrefix limita aún más la inclusión de includePrefix en la transferencia.

Cuando especificas includePrefix y excludePrefix, cada excludePrefix debe comenzar con cualquiera de los valores que especificaste para includePrefix.

Por ejemplo, para incluir objetos en path_1/ y excluir objetos en subpath_1/, pasa lo siguiente:

includePrefix: "path_1/"
excludePrefix: "path_1/subpath_1/"

En este caso, la transferencia incluye los siguientes objetos:

path_1/object_3
path_1/subpath_2/object_6

Para incluir todos los objetos en path_1/ y path_2/, excepto los elementos en path_1/subpath_1/ o path_2/subpath_3/, pasa lo siguiente:

includePrefix: "path_1/", "path_2/"
excludePrefix: "path_1/subpath_1/", "path_2/subpath_3/"

En este caso, la transferencia incluye los siguientes objetos:

path_1/object_3
path_2/object_4
path_1/subpath_2/object_6
path_2/subpath_4/object_8

Ejemplos de inclusión o exclusión incorrecta de las rutas de acceso

En las siguientes secciones, se incluyen ejemplos que se deben evitar cuando se usan rutas de inclusión o exclusión y se indica cómo corregirlas para que funcionen correctamente.

Incluye una ruta de acceso que se usa en otro prefijo de inclusión

Cada includePrefix debe especificar una parte distinta del espacio de nombres del objeto. El siguiente ejemplo es incorrecto, ya que el segundo valor está incluido en el espacio de nombres del primer valor:

includePrefix: "path_1/", "path_1/subpath_1"

En este ejemplo, los valores includePrefix no son válidos, ya que el segundo includePrefix, "path_1/subpath_1", ya se incluye en "path_1/". Para solucionarlo, selecciona una de las siguientes opciones:

  • includePrefix: "path_1"
  • includePrefix: "path_1/subpath_1"

Usa un prefijo de exclusión que no comience con un prefijo de inclusión

Cada excludePrefix debe comenzar con cualquiera de los valores includePrefix especificados. El siguiente ejemplo es incorrecto, ya que los valores excludePrefix no comienzan con los valores includePrefix especificados:

includePrefix: "path_1/", "path_2/"
excludePrefix: "subpath_1/", "subpath_4/"

En este ejemplo, los valores excludePrefix no son válidos, ya que no comienzan con ninguno de los valores includePrefix, path_1 ni path_2. Para solucionarlo, asegúrate de que excludePrefix incluya una ruta de acceso completa en includePrefix:

includePrefix: "path_1/", "path_2/"
excludePrefix: "path_1/subpath_1/", "path_2/subpath_4/"