File system che utilizza tag anziché cartelle?


122

I miei file sono un disastro, cerco di strutturarli in cartelle con nomi che descrivono cosa sono in un senso di suddivisione della classe ricorsiva ma in seguito ho problemi a trovare di nuovo il file quando lo cerco (l'unico file può possibilmente esistono in molte cartelle).

Quale file system mi consentirà di trovare i miei file tramite una combinazione di tag invece di utilizzare le cartelle?

Se esistesse un tale file system, non sono sicuro di come i sistemi operativi potrebbero far fronte, essendo così profondamente dipendenti dal sistema di cartelle. Mi sono imbattuto in tag2find , che non è poi così male; risolve il mio problema con la ricerca di cose per ora, ma è un'applicazione, non un file system.



2
(a partire dal 2013) Gmail ha questo sistema già in atto con i tuoi messaggi di posta elettronica. Ora per convincerli a implementarlo in Google Drive!
chharvey

questa domanda è simile a questa
chharvey il

2
Ci ho pensato, un sistema del genere potrebbe eliminare del tutto le cartelle e persino i nomi dei file (per non parlare delle sciocchezze sulle estensioni). In modo tale che il percorso, il nome e l'identificatore univoco di un file sarebbero solo l'insieme di tag che vengono applicati ad esso. E anche allora, potrebbe esserci più di un file con lo stesso set di tag, perché no. La notazione potrebbe essere la stessa, ad esempio document/report/2015/finance/v2.01in cui l'ordine dei tag non sarebbe importante. La cosa grandiosa di questo è che potresti fornire solo alcuni tag e non tutti, e comunque arrivare ai file che desideri.
Petruza

1
@ Petruza Penso che avere un tag ID univoco per ogni file potrebbe rendere complicata la gestione dei tag. I nomi dei file sarebbero ancora una proprietà utile in aggiunta ai tag più generali.
jiggunjer

Risposte:


34

Quello che stai chiedendo è un file system di database . Conosco un'implementazione sperimentale per Linux chiamata DBFS . Microsoft ha iniziato a sviluppare Windows Future Storage (WinFS) : era previsto che fosse fornito con Vista, ma a causa di problemi tecnici il progetto è stato ritardato e, per quanto ne so, alla fine annullato. NTFS è anche in grado di memorizzare i metadati per i file, ma non fino all'estensione di un file system di database completo.

L'integrazione di un tale file system in un sistema operativo non dovrebbe essere così complicata per il nucleo del sistema operativo: può semplicemente attenersi al modello gerarchico. La parte complessa è la shell (grafica) che deve esporre la struttura e le capacità del file system all'utente.


2
sì, WinFS è stato cancellato intorno al 2006: p. Potrei provare DBFS per un po 'di tempo.
clinux

5
Credo che siano anche chiamati file system semantici o file system relazionali .
jiggunjer

37

Ecco alcuni file system che ho trovato utilizzando Google.

TagFS - Documento "Tag Semantics for Hierarchical File Systems" di Stephan Bloehdorn e Max Völkel, 2006 http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.60.4187

dhtfs - "File system basato sui tag, che fornisce gerarchie di directory dinamiche basate sui tag associati ai file" un'implementazione utilizzabile, ultima versione 2007 http://code.google.com/p/dhtfs/

Tagsistant - Progetto "Un file system semantico ragionante per Linux e BSD" in fase di sviluppo attivo http://www.tagsistant.net/

Leaftag - "Tagging for the Linux desktop" un'altra implementazione, ultima release 2006 http://www.chipx86.com/w/index.php/Leaftag

Sull'integrazione con i sistemi operativi, non penso che dovrebbe essere così difficile. I sistemi operativi dipendono profondamente dalla gerarchia del file system, ma il file system basato su tag può imitare la struttura delle directory. Ad esempio, in un file system basato su tag, il percorso /etc/init.dfornirà tutti i file contrassegnati con esattamente due tag, ovvero "etc" e "init.d". Per i file che sono etichettati con altri tag oltre a questi due tag, i loro tag aggiuntivi possono apparire come directory all'interno di /etc/init.d. Se è presente un file a.txt con tre tag, ad esempio "etc", "init.d" e "asdf", "asdf" apparirà come directory all'interno di /etc/init.d e il percorso completo di a.txt diventerà / etc / init.d / asdf / a.txt.


@clinux: eccone un altro recente, Fuse :: TagLayer , anche se sembra essere di sola lettura.
isync

35

Sono l'autore del programma Linux TMSU che consente di contrassegnare i file e visualizzarli in un filesystem basato su tag.

Ecco alcuni esempi di utilizzo:

$ tmsu tag track.mp3 music genre=indie-rock good year=1999
$ tmsu tag melody.mp3 music
$ tmsu tag DC123.jpg photo landscape country=italy year=2014
$ tmsu files music year = 1999
./song.mp3

E il filesystem virtuale:

$ mkdir mp
$ tmsu mount mp
$ ls mp
query  tags
$ ls tags
country  genre  good  landscape  photo  music  year
$ ls tags/music
genre  good  track.1.mp3  melody.2.mp3 year

I numeri nei nomi dei file sono identificatori che servono a mantenere i nomi dei file univoci. Questi sono collegamenti simbolici alle posizioni originali dei file.

$ ls tags/music/good  # you can drill down
genre  track.1.mp3  year
$ ls "query/music and good"  # this directory gets automatically created
track.1.mp3

È ancora in fase di sviluppo attivo. Al momento della stesura di questo articolo (ottobre 2014) la 0.4.2 è disponibile, ma presto rilascerò la 0.5.0.


1
Qualche modo per usarlo con Windows?
Jonathan

1
@ Jonathan, sì, c'è una vecchia build di Windows che puoi provare. Nota che è un po 'buggato e non c'è supporto VFS. Continuo a pensare di andare in giro a fare un port corretto, ma voglio prima portare il core a uno stato buono.
Paul Ruane

Sembra fantastico Paul :)
Jonathan


4

Prova tagfs . È un file system dello spazio utente basato su fusibili. Può mostrare le directory contrassegnate da una directory di origine in una visualizzazione del filtro dei tag.

Ad esempio, supponiamo che tu abbia una directory "vacanze india" contrassegnata con "india" e "foto" e una directory "vacanze spagna" contrassegnata con "spagna" e "foto". Puoi filtrare tutte le tue foto inserendo il percorso "/ mio_mountpoint / foto".

Le directory sono contrassegnate da un semplice file di testo. Un file denominato ".tag" nella directory contiene i tag. Più tag sono separati da una nuova riga.


3

Mi sono imbattuto in questa domanda mentre mi ponevo la stessa domanda sui tag dei file del filesystem. Poi mi sono imbattuto in questa applicazione per Windows XP / Vista chiamata TaggedFrog che potrebbe fare il trucco. Non l'ho ancora provato, ma sembra promettente.

Non vedo l'ora di passare attraverso migliaia di file però! In ogni caso, a un certo punto sarò costretto a passare a Win7 e potrò provare la sua codifica nativa.


Credo che TaggedFrog supporti anche le versioni più recenti di Windows.
jiggunjer


2

C'è TagsForAll per Windows. È un file manager basato sui tag. I tag possono avere una struttura gerarchica. L'interfaccia utente è molto semplice ma piacevole. Versione gratuita completamente funzionante e salva i tag nel database, la versione Pro salva i tag anche all'interno del flusso NTFS in un file.


2

Ho trovato il design dell'interfaccia utente di Elyse è meraviglioso. Ma è più un sistema statico che non può controllare la cartella e taggare automaticamente un nuovo file con un tag predefinito.


1

Ho pensato a lungo anche a un file system basato su tag. Qualcuno ha pensato a un approccio più radicale e semplice? Per dimenticare completamente le cartelle (cartelle simulate solo per motivi di compatibilità per i programmi) e inserire tutti i tag direttamente nel nome del file.

(Nome file classico) _Tag1_Tag2_Tag3 _..... (Estensione file)

Mydocument_tag a base-file-system_tags_file-system_stackoverflow_folder_file-name_tagfs.txt

Mi piace sempre inserire quante più informazioni possibili nel nome del file. Puoi trovare tutto in milioni di file su ogni possibile sistema operativo.

L'unico limite è la diversa lunghezza del nome del file in evey OS, e diventa disordinato con i sistemi attuali.

Un sistema operativo avanzato con potrebbe accedere a un file come questo: Mydocument.txt E i tag possono essere modificati nel livello più basso del sistema operativo, come cambiare il nome del file oggi. Se all'improvviso c'è un altro Mydocument.txt, viene automaticamente rinominato in Mydocument (2) .txt e così via.

So che questa idea non è priva di problemi aggiuntivi, nemmeno menzionata qui .....

Ma l'idea sta per memorizzare i tag nella possibilità più elementare di basso livello, a cui è possibile accedere da TUTTI i file system passati e futuri. E ciò che tutte le FS hanno in comune è il nome del file.


Sembra un'implementazione molto rozza di un DBFS.
Chuu

Stai mescolando mele e arance. Tutto ciò che fa è spostare la struttura gerarchica dalla directory al nome del file. O in altre parole, "tutto in una directory" e "tag nei nomi dei file" non hanno senso in un mondo basato sui tag. E ovviamente non vorresti che i programmi applicativi dovessero occuparsi di 10.000 file, quindi il sistema operativo dovrebbe fornire file in modo efficiente in base a una specifica di tag. Quindi l'app invia al sistema operativo i "tag" di cui ha bisogno per "identificare il file" e ... si torna subito alle directory o a uno dei file system alternativi menzionati qui.
CoolHandLouis

Windows Explorer ha un limite di percorso di 255 caratteri, facilmente raggiungibile. Altrimenti il ​​limite dovrebbe essere dettato dal limite FS sui nomi dei file. Abbastanza rozzo sì, ma comunque una bella idea. Se desideri memorizzare i metadati nel file e filtrarlo a un livello basso, potrebbero esserci altri modi meno limitati, come aggiungere o anteporre i dati al file o avere un file "collaterale" con lo stesso nome file ma un diverso estensione, che conterrebbe i metadati. Un altro problema è che la semplice ridenominazione di un tag potrebbe richiedere milioni di operazioni di modifica del file.
Rolf

In realtà questa idea è stata implementata da TagSpaces .
Arnie97

0

Non penso avesse (ha) il supporto per la codifica di per sé, ma BFS supporta alcune funzionalità di metadati piuttosto interessanti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.