2012-01-19 20 views
5

Estoy escribiendo un script para hacer copias de seguridad de varios archivos diferentes. Lo que me gustaría hacer es almacenar metainformación sobre la copia de seguridad. Actualmente estoy usando el nombre del archivo, así por ejemplo:¿Existe una forma estándar, a través de los sistemas operativos, de agregar "etiquetas" a los archivos

backups/cool_file_bkp_c20120119_104955_d20120102 

Dónde c representa la fecha y hora de creación del archivo, y d representa "tiempo de datos", que representa lo que el cool_file contiene en realidad. La razón por la que actualmente uso el "tiempo de datos" es que se puede realizar una copia de seguridad posterior del mismo archivo, en cuyo caso, sé que puedo reemplazar de manera segura la copia de seguridad anterior de la misma "hora de datos" sin perder ninguna información.

Parece una forma horrible de hacer las cosas, pero parece tener el beneficio de no ser dependiente del os. ¿Hay una mejor manera?

FYI: Estoy usando Python para ejecutar la creación de mi copia de seguridad, y actualmente necesito que esto funcione en Windows XP, 2003 y Redhat Linux.

EDIT: Solución: De las respuestas a continuación, he inferido que los metadatos en los archivos no son ampliamente compatibles de forma estándar. Dado que mi objetivo era acoplar estrechamente los metadatos con el archivo, parece que archivar el archivo junto con un archivo de texto de metadatos es el camino a seguir.

+0

Otra solución sería almacenar los metadatos en el archivo, o usar un archivo/base de datos adicional que contenga una tabla con las columnas md5hash, creationtime, datatime. –

+0

Puedo ver muchas maneras de almacenar los metadatos en un archivo externo, ¡pero en realidad no veo cuál es el problema con su sistema actual! – katrielalex

Respuesta

3

me gustaría tener uno de dos enfoques: allí

crear un archivo independiente, en el dir backub, que contendría los metadatos se desea - esto podría ser somethnng en forma legible por humanos, sólo para hacer la vida más fácil , como una estructura de datos json o un archivo similar a "ini".

El otro es archivar los archivos copiados - posiblemente usando "zip" y adjuntar un archivo de texto con los metadatos deseados.

La idea de crear archivos comprimidos para agrupar archivos que desee en conjunto se usa en varios lugares, como en archivos java .jar, formato de documento abierto (archivos de oficina creados por varias suturas de oficina), Office Open XML (Microsoft específico offic archivos), e incluso el lenguaje Python posee huevos.

El módulo ziplib en la biblioteca estándar de Python tiene todos los recursos necesarios para realizar esto: puede usar una representación de diccionario en un archivo incluido con el original para tener tantos metadatos como necesite.

En cualquiera de estos enfoques, también necesitará un script de ayuda para poder ver y filtrar los metadatos en los archivos, por supuesto.

1

Los diferentes sistemas de archivos (no diferentes sistemas operativos) tienen capacidades diferentes para almacenar metadatos. NTFS tiene muchas posibilidades, mientras que FAT es muy limitado, y ext * están en algún punto intermedio. Ninguno de los sistemas de archivos extendidos (término subjetivo, sí) admite etiquetas personalizadas que podría usar. En consecuencia, no existe una forma estándar de trabajar con dichas etiquetas. En Windows se intentó introducir Atributos extendidos, pero estos se implementaron de una manera tan complicada que casi no se podían usar.

Así que poner lo que pueda en el nombre de archivo sigue siendo el único enfoque de trabajo. Recuerde que los sistemas de archivos tienen limitaciones en el nombre del archivo y la longitud de la ruta del archivo, y con este enfoque puede exceder el límite, así que tenga cuidado.

Cuestiones relacionadas