2012-01-19 11 views
5

Sto scrivendo uno script per fare copie di backup di vari file diversi. Quello che mi piacerebbe fare è archiviare le meta informazioni sul backup. Attualmente sto usando il nome del file, così per esempio:C'è un modo standard, tra sistemi operativi, di aggiungere "tag" ai file

backups/cool_file_bkp_c20120119_104955_d20120102 

Dove c rappresenta il datetime creazione del file, e d rappresenta "dati in tempo", che rappresenta ciò che il cool_file contiene in realtà. La ragione per cui attualmente utilizzo "data time" è che un backup successivo può essere fatto dello stesso file, nel qual caso so di poter tranquillamente sostituire il precedente backup dello stesso "data time" senza perdere alcuna informazione.

Sembra un modo terribile di fare le cose, ma sembra avere il vantaggio di non essere dipendente da OS. C'è un modo migliore?

FYI: Sto usando Python per scrivere la mia creazione di backup, e attualmente ho bisogno di farlo funzionare su Windows XP, 2003 e Redhat Linux.

MODIFICA: Soluzione: Dalle risposte seguenti, ho dedotto che i metadati sui file non sono ampiamente supportati in un modo standard. Dato il mio obiettivo era quello di accoppiare strettamente i metadati con il file, sembra che l'archiviazione del file insieme a un file di testo di metadati sia la strada da percorrere.

+0

un'altra soluzione potrebbe memorizzare i metadati nel file stesso oppure utilizzare un file/database aggiuntivo contenente una tabella con le colonne md5hash, creationtime, datatime. –

+0

Riesco a vedere molti modi per archiviare i metadati in un file esterno, ma in realtà non vedo cosa c'è di sbagliato nel tuo sistema attuale! – katrielalex

risposta

3

mi piacerebbe prendere uno dei due approcci là:

creare un file a sé stante, sul dir backub, che dovrebbe contenere i metadati desiderato - questo potrebbe essere somethnng in forma leggibile, solo per rendere la vita più facile , come una struttura dati JSON o un file "ini".

L'altro è quello di archiviare i file copiati - possibilmente utilizzando "zip", e raggruppare insieme ad esso un file testuale con i meta-dati desiderati.

L'idea di creare archivi zip per raggruppare i file che si desidera insieme viene utilizzata in diversi punti, come nei file java .jar, Open Document Format (file offfice creati da diversi sutres), Office Open XML (Microsoft specifico offic file) e anche il linguaggio Python possiede le uova.

Il modulo ziplib nella libreria standard di Python dispone di tutti gli strumenti necessari per ottenere questo risultato: è sufficiente utilizzare la rappresentazione di un dizionario in un file in bundle con quello originale per disporre di tutti i metadati necessari.

In uno di questi approcci occorrerà anche uno script di supporto per vedere e filtrare i metadati sui file, naturalmente.

1

I diversi file system (non diversi sistemi operativi) hanno funzionalità diverse per la memorizzazione dei metadati. NTFS ha un sacco di possibilità, mentre il FAT è molto limitato, e ext * sono da qualche parte nel mezzo. Nessuno dei filesystem diffusi (soggettivi, sì) supporta tag personalizzati che è possibile utilizzare. Di conseguenza non esiste un modo standard per lavorare con tali tag. Su Windows si è tentato di introdurre attributi estesi, ma questi sono stati implementati in modo così ingannevole che erano quasi inutilizzabili.

Quindi mettere tutto il possibile nel nome del file rimane l'unico approccio di lavoro. Ricorda che i filesystem hanno limitazioni sul nome del file e sulla lunghezza del percorso del file, e con questo approccio puoi superare il limite, quindi fai attenzione.

Problemi correlati