Borg: ¿Etiquetar archivos para "podar"?

Creado en 6 abr. 2016  ·  5Comentarios  ·  Fuente: borgbackup/borg

Actualmente, borg prune solo puede restringir que los archivos se eliminen con un prefijo común. Esto funciona para esquemas de nomenclatura donde la parte "relevante" de los nombres de archivo está al frente, por ejemplo, system-<hostname>-<date> y userdata-<hostname>-<date> , pero en realidad no funciona para nada más.

Agregar etiquetas, es decir, una lista de cadenas arbitrarias (excluyendo "," que sería el separador de etiquetas) ayudaría. "podar" y otros comandos que usan "--prefix" obtendrían una opción "--tags", y solo los archivos que tengan _todas_ (o _cualquier_, discutir) etiquetas en la lista se verían afectados (y deberían ser inmutables por esta razón).


EDITAR: Tal vez un enfoque diferente, sin campos de metadatos adicionales, aplicable hacia atrás .

Los nombres ya están ahí. Podríamos simplemente agregar algo como --tags some,tags (¿usar siempre , como delimitador aquí?) Y --tag-delim - (¿qué delimitar por defecto?).

tags = set(args.tags.split(args.tag_delim))
for archive in ...:
  if set(archive.name.split(args.tag_delim)) <= tags:
    ...  # prune
enhancement

Comentario más útil

Me gustaría aumentar esta solicitud de función para etiquetas / alias.

Después de pasar tanto tiempo en el universo de git, me encuentro deseando poder aplicar etiquetas adicionales a archivos borg específicos.

Actualmente es posible incrustar etiquetas en el nombre del archivo, pero es bastante rebelde cuando desea utilizar varias etiquetas para un archivo. Por ejemplo, ya utilizo el nombre del archivo para incrustar el nombre de host, la marca de tiempo y uno o dos campos más. También quiero agregar etiquetas adicionales como "@latest" y "@ release-1". Esto se complica rápidamente. Peor aún, a veces quiero mover una etiqueta como @latest de un archivo a otro.

Si solo está usando borg para respaldar archivos (concedido, su misión original), probablemente no haya mucha necesidad de etiquetas. Pero si, como yo, ha encontrado que la deduplicación de borg es enormemente útil en otras situaciones, como archivar archivos muy grandes utilizados en una canalización de análisis de datos :-), entonces la capacidad de asignar múltiples etiquetas a un archivo existente se vuelve realmente importante.

Actualmente, mi solución es crear el archivo original con el esquema de nomenclatura que he ideado y luego crear inmediatamente varios archivos adicionales con nombres que comiencen con "@" - @latest , @ v1.0, @ beta2 , etc. Cada uno de esos archivos adicionales toma un par de minutos para escanear / crear, y agrega solo unos cientos de bytes al repositorio ya que el contenido es completamente idéntico al archivo original. (Bueno, siempre y cuando los archivos no hayan cambiado en esos minutos).

Sería muy bueno eliminar esa ralentización añadiendo metadatos de etiquetas.

Imagino que la interfaz de usuario será algo como esto:

  • Cree una nueva etiqueta y apúntela a un archivo existente:
    borg tag [repo::archive-name] [tag1] [tag2] ...

  • Enumere todas las etiquetas y los archivos a los que apuntan
    borg tag --list [repo]

  • Eliminar etiquetas podría reutilizar el comando borg delete o también podría ser una opción de comando:
    borg tag -d [repo] [tagname]

¡Gracias por considerar esto!

Todos 5 comentarios

Mezclar nombres y etiquetas se siente sucio. Las etiquetas pueden ser metadatos de archivo independientes.

Buen punto, pero no estoy seguro de si eso no está bien aquí (como decisión de diseño). # 866 me hizo pensar "Hm, ¿para qué _es_ realmente el nombre del archivo?". "Reciclarlo" para etiquetarlo no es algo realmente limpio, pero me parece bastante práctico (si se trata de una aceptación 100% explícita). En cierto modo, "etiquetas" sería una forma diferente de ver el campo "nombre".

Me gustaría aumentar esta solicitud de función para etiquetas / alias.

Después de pasar tanto tiempo en el universo de git, me encuentro deseando poder aplicar etiquetas adicionales a archivos borg específicos.

Actualmente es posible incrustar etiquetas en el nombre del archivo, pero es bastante rebelde cuando desea utilizar varias etiquetas para un archivo. Por ejemplo, ya utilizo el nombre del archivo para incrustar el nombre de host, la marca de tiempo y uno o dos campos más. También quiero agregar etiquetas adicionales como "@latest" y "@ release-1". Esto se complica rápidamente. Peor aún, a veces quiero mover una etiqueta como @latest de un archivo a otro.

Si solo está usando borg para respaldar archivos (concedido, su misión original), probablemente no haya mucha necesidad de etiquetas. Pero si, como yo, ha encontrado que la deduplicación de borg es enormemente útil en otras situaciones, como archivar archivos muy grandes utilizados en una canalización de análisis de datos :-), entonces la capacidad de asignar múltiples etiquetas a un archivo existente se vuelve realmente importante.

Actualmente, mi solución es crear el archivo original con el esquema de nomenclatura que he ideado y luego crear inmediatamente varios archivos adicionales con nombres que comiencen con "@" - @latest , @ v1.0, @ beta2 , etc. Cada uno de esos archivos adicionales toma un par de minutos para escanear / crear, y agrega solo unos cientos de bytes al repositorio ya que el contenido es completamente idéntico al archivo original. (Bueno, siempre y cuando los archivos no hayan cambiado en esos minutos).

Sería muy bueno eliminar esa ralentización añadiendo metadatos de etiquetas.

Imagino que la interfaz de usuario será algo como esto:

  • Cree una nueva etiqueta y apúntela a un archivo existente:
    borg tag [repo::archive-name] [tag1] [tag2] ...

  • Enumere todas las etiquetas y los archivos a los que apuntan
    borg tag --list [repo]

  • Eliminar etiquetas podría reutilizar el comando borg delete o también podría ser una opción de comando:
    borg tag -d [repo] [tagname]

¡Gracias por considerar esto!

Solo comencé a probar borg recientemente, pero quería hacer +1 en la idea de etiquetado. Puedo ver un caso de uso relevante para las copias de seguridad en el que las etiquetas se utilizan para definir en cuál de los múltiples servicios en la nube se realiza una copia de seguridad de un archivo. Me imagino (basado en otras discusiones) que la copia de seguridad en la nube probablemente sería a través de una herramienta separada que recoge las etiquetas y, por ejemplo, maneja la creación de un archivo * .tgz para ser cargado. (Incluso podría agregar la frecuencia de respaldo como una etiqueta detectable separada, pero ese tipo de cosas estaría dentro del alcance de la herramienta de respaldo en lugar de borg en sí).

Consulte el número 2300 para ver una posible implementación de etiquetas. Actualmente, se parece más a git tag que a las etiquetas de Gmail; en otras palabras, pueden existir alias adicionales para un archivo, pero deben ser únicos. Puede que no sea difícil fusionar esa idea con lo que se analiza aquí: etiquetas aplicadas a varios archivos.

¿Fue útil esta página
0 / 5 - 0 calificaciones