GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cuál es una buena solución para el etiquetado de archivos en Linux?

Acabo de publicar una versión alfa de mi nuevo programa que intenta proporcionar esta funcionalidad. Actualmente cumple con algunos, pero no todos, de sus requisitos. Puede que te interese de todos modos. Proporciona una herramienta de línea de comandos para etiquetar y un sistema de archivos virtual para navegar (donde las etiquetas están representadas por directorios).

http://www.tmsu.org/

cualquier archivo legible por el usuario se puede etiquetar libremente

Sí.

un usuario puede buscar archivos que coincidan con una o varias etiquetas

Sí. Ya sea a través de la herramienta de línea de comandos o explorando los directorios de etiquetas en el sistema de archivos virtual.

los archivos se pueden mover sin perder las etiquetas previamente asociadas

No. Sin embargo, la aplicación almacena huellas dactilares de los archivos etiquetados que se utilizan para ayudar a identificar los archivos movidos. Se proporciona un comando de 'reparación' que actualizará las rutas de los archivos movidos. (Obviamente, este mecanismo falla si un archivo se mueve y se modifica).

el sistema podría ser respaldado fácilmente

Sí. Es un simple archivo de base de datos Sqlite 3.

sin dependencias de ningún entorno de escritorio

Sí. Sin dependencias y como se puede ejecutar como un sistema de archivos virtual, está disponible para examinarlo como un sistema de archivos en cualquier programa que admita enlaces simbólicos.

si alguna interfaz gráfica de usuario está involucrada, debe haber un respaldo de cli

Sin GUI en la actualidad.


No está claro qué tipo de búsqueda desea. Si desea que funcione en cualquier parte de Unix, en lugar de solo en su directorio de inicio, y solo desea realizar búsquedas basadas en el nombre de la ruta, el siguiente esquema es viable, con un poco de piratería de shell y usando el estándar locatedb :

  1. Cada directorio que contiene al menos un archivo etiquetado necesita un subdirectorio estándar, digamos .path-tags;
  2. Cada archivo en el directorio $FILE con enlace $TAG (que no debe contener el carácter _ ) tiene un enlace $TAG_$FILE -> ../$FILE

les dejo los detalles del locate-tag guión para ti; debe ser de dos o tres líneas, usando solo el locate piratería de comando y shell. (Si estás interesado, podría escribir uno).

Algunos de los muchachos de KDE hablaron sobre este tipo de esquema para metadatos, aunque no recuerdo los detalles.

También debería ser posible realizar pruebas de examen de contenido más sofisticadas basadas en este esquema con un script similar envuelto alrededor de find .

Reflexiones sobre los requisitos actualizados

  1. cualquier archivo legible por el usuario se puede etiquetar libremente - Sí, no debería haber problema
  2. un usuario puede buscar archivos que coincidan con una o varias etiquetas - Del mismo modo
  3. los archivos se pueden mover sin perder las etiquetas previamente asociadas - Los directorios que habitan se pueden mover libremente, pero si el archivo se mueve del directorio, estamos en problemas. Si las etiquetas tuvieran la forma $TAG_$INODE_$FILE y tenemos una manera eficiente de encontrar qué rutas tienen un inodo dado, entonces podemos hacer esto, perdiendo etiquetas solo si salimos de los sistemas de archivos. Copiar archivos puede causar algunos problemas y esto es claramente más complicado que mi sugerencia original.
  4. se puede hacer una copia de seguridad del sistema fácilmente - no es esencialmente difícil.
  5. sin dependencias de ningún entorno de escritorio - ninguno
  6. si hay alguna interfaz gráfica de usuario involucrada, debe haber un respaldo de cli - ¡ahí es donde vivimos!

Posdata El archivo de "búsqueda inversa de inodos" descrito en el enlace (2) que me mostró en su respuesta a (1) se puede usar para brindar infraestructura adicional. Podemos ejecutar un servicio en el archivo de búsqueda inversa, que verifica que cada inodo proporcionado en el nombre de archivo de una etiqueta coincida con el inodo del archivo (si corresponde) al que apunta la etiqueta. Si no hay ninguna coincidencia, entonces se puede realizar la cirugía requerida (¿aún existe el inodo? ¿Dónde está?), y el archivo de búsqueda inversa se muta o se regenera, y se actualizan los enlaces simbólicos de la etiqueta.

Anticipo un caso complicado:¿qué pasa si el archivo etiquetado no está donde las etiquetas dicen que debería estar, el archivo de búsqueda inversa dice que todavía existe, pero el archivo pródigo no está donde dice el archivo de búsqueda, el archivo de búsqueda está fuera de ¿fecha? Hay algunas formas de manejar este caso, ninguna obviamente ideal. Aparte de esto, toda esta tarea parece ser el tipo de cosas para las que Perl está bien preparado...


Nadie lo mencionó, pero definitivamente debería mirar los atributos del sistema de archivos extendidos. Ext4, por ejemplo, los tiene. hay herramientas getfattr y setfattr para lidiar con ellos. Por supuesto, tendrá que escribir algunos scripts de shell para buscar archivos etiquetados con alguna etiqueta. Con respecto a las preguntas mencionadas, todas las respuestas son "Sí". Solo debe tener en cuenta que depende del sistema de archivos.


Linux
  1. Cómo auditar modificaciones de archivos y ejecuciones de archivos en Linux

  2. ¿Qué son los archivos dispersos en Linux?

  3. Necesita un buen editor hexadecimal para Linux

  4. ¿Cuál es la limitación máxima de archivos abiertos en Linux?

  5. ¿Qué es un buen visor de archivos CHM para (Fedora) Linux?

7 consejos de línea de comandos de Linux para ahorrar espacio en archivos multimedia

Copiar archivos en Linux

Comando Cp en Linux (Copiar archivos)

¿Qué es umask en Linux?

Comando ls en Linux para listar archivos

¿Qué es el archivo .bashrc en Linux?