Système de fichiers qui utilise des balises plutôt que des dossiers?

122

Mes fichiers sont en désordre, j'essaie de les structurer dans des dossiers avec des noms qui décrivent ce qu'ils sont dans un sens de décomposition de classe récursive, mais plus tard, j'ai du mal à retrouver le fichier lorsque je le cherche (le seul fichier peut éventuellement existent dans de nombreux dossiers).

Quel système de fichiers me permettra de trouver mes fichiers par une combinaison de balises au lieu d'utiliser des dossiers?

S'il y avait un tel système de fichiers, je ne sais pas comment les systèmes d'exploitation s'en sortiraient, étant si profondément dépendants du système de dossiers. Je suis tombé sur tag2find , ce qui n'est pas trop mal; cela résout mon problème de recherche de choses pour le moment, mais c'est une application, pas un système de fichiers.

clinux
la source
En relation: stackoverflow.com/q/876188/89771
Alix Axel
2
(à partir de 2013) Gmail a déjà ce système en place avec vos e-mails. Maintenant, pour les amener à l'implémenter dans Google Drive!
chharvey
cette question est similaire à celle-ci
chharvey
2
J'ai pensé à cela, un tel système pourrait se débarrasser des dossiers et même des noms de fichiers (sans parler des extensions absurdes). De telle sorte que le chemin, le nom et l'identifiant unique d'un fichier ne seraient que l'ensemble des balises qui lui sont appliquées. Et même dans ce cas, il pourrait y avoir plus d'un fichier avec le même jeu de balises, pourquoi pas. La notation pourrait être la même, par exemple document/report/2015/finance/v2.01dans laquelle l'ordre des balises n'aurait pas d'importance. La grande chose à ce sujet est que vous pouvez simplement fournir quelques balises et pas toutes, et toujours accéder aux fichiers que vous voulez.
Petruza
1
@Petruza Je pense qu'avoir une balise d'identification unique pour chaque fichier peut rendre la gestion des balises délicate. Les noms de fichiers seraient toujours une propriété utile en plus des balises plus générales.
jiggunjer

Réponses:

34

Ce que vous demandez, c'est un système de fichiers de base de données . Je connais une implémentation expérimentale pour Linux appelée DBFS . Microsoft a commencé à développer Windows Future Storage (WinFS) - il était prévu d'être livré avec Vista mais en raison de problèmes techniques, le projet a été retardé et, à ma connaissance, finalement annulé. NTFS est également capable de stocker des métadonnées pour les fichiers, mais pas dans une extension d'un système de fichiers de base de données complet.

L'intégration d'un tel système de fichiers dans un système d'exploitation ne devrait pas être si compliquée pour le cœur du système d'exploitation - elle peut simplement s'en tenir au modèle hiérarchique. La partie complexe est le shell (graphique) qui doit exposer la structure et les capacités du système de fichiers à l'utilisateur.

Daniel Brückner
la source
2
oui, WinFS a été annulé vers 2006: p. Pourrait essayer DBFS un certain temps.
clinux
5
Je pense qu'ils sont également appelés systèmes de fichiers sémantiques ou systèmes de fichiers relationnels .
jiggunjer
37

Voici quelques systèmes de fichiers que j'ai trouvés en utilisant google.

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

dhtfs - "Système de fichiers basé sur le balisage, fournissant des hiérarchies de répertoires dynamiques basées sur des balises associées aux fichiers" une implémentation utilisable, dernière version 2007 http://code.google.com/p/dhtfs/

Tagsistant - Projet "Un système de fichiers sémantique raisonné pour Linux et BSD" en cours de développement actif http://www.tagsistant.net/

Leaftag - "Balisage pour le bureau Linux" une autre implémentation, dernière version 2006 http://www.chipx86.com/w/index.php/Leaftag

Concernant l'intégration avec les systèmes d'exploitation, je ne pense pas que cela devrait être si difficile. Les systèmes d'exploitation dépendent profondément de la hiérarchie du système de fichiers, mais le système de fichiers basé sur des balises peut imiter la structure des répertoires. Par exemple, dans un système de fichiers basé sur des balises, le chemin /etc/init.ddonnera tous les fichiers marqués avec exactement deux balises, à savoir «etc» et «init.d». Pour les fichiers qui sont marqués avec d'autres balises ainsi que ces deux balises, leurs balises supplémentaires peuvent apparaître sous forme de répertoires dans /etc/init.d. S'il existe un fichier a.txt avec trois balises, à savoir 'etc', 'init.d' et 'asdf', alors 'asdf' apparaîtra comme répertoire dans /etc/init.d et le chemin complet de a.txt deviendra / etc / init.d / asdf / a.txt.

binW
la source
@clinux: En voici un autre récent, Fuse :: TagLayer , bien qu'il semble être en lecture seule.
isync le
35

Je suis l'auteur du programme Linux TMSU qui vous permet d'étiqueter des fichiers et de les afficher dans un système de fichiers basé sur des balises.

Voici quelques exemples d'utilisation:

$ 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

Et le système de fichiers virtuel:

$ 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

Les nombres dans les noms de fichiers sont des identifiants qui sont là pour garder les noms de fichiers uniques. Ce sont des liens symboliques vers les emplacements d'origine des fichiers.

$ 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

Il est toujours en développement actif. Au moment de la rédaction de cet article (octobre 2014) 0.4.2 est disponible mais je publierai bientôt 0.5.0.

Paul Ruane
la source
1
Un moyen de l'utiliser avec Windows?
Jonathan
1
@Jonathan, oui, il existe une ancienne version de Windows que vous pouvez essayer. Notez que c'est un peu bogué et qu'il n'y a pas de support VFS. Je continue à vouloir faire un bon portage mais je veux d'abord que le noyau soit en bon état.
Paul Ruane
Ça a l'
Jonathan
6

Vista et Windows 7 prennent en charge le balisage des fichiers. Voir cet article

Johann Strydom
la source
9
Malheureusement, tous les types de fichiers ne peuvent pas être étiquetés de cette façon.
clinux
4

Essayez tagfs . C'est un système de fichiers d'espace utilisateur basé sur des fusibles. Il peut afficher les répertoires marqués d'un répertoire source dans une vue de filtre de balises.

Par exemple, disons que vous avez un répertoire «vacances inde» qui est étiqueté «inde» et «photos» et un répertoire «vacances espagne» étiqueté «espagne» et «photos». Vous pouvez filtrer toutes vos photos en entrant le chemin '/ my_mountpoint / photos'.

Les répertoires sont balisés via un simple fichier texte. Un fichier nommé '.tag' dans le répertoire contient les balises. Plusieurs balises sont séparées par des retours à la ligne.

Markus Peröbner
la source
3

Je suis tombé sur cette question en me posant la même question sur les balises de fichiers du système de fichiers. Je suis ensuite tombé sur cette application pour Windows XP / Vista appelée TaggedFrog qui peut faire l'affaire. Je n'ai pas encore essayé, mais cela semble prometteur.

Je n'ai pas hâte de parcourir des milliers de fichiers! Quoi qu'il en soit, je serai obligé de passer à Win7 à un moment donné et je pourrai essayer son balisage natif.

KJH
la source
Je pense que TaggedFrog prend également en charge les nouvelles versions de Windows.
jiggunjer
2

Il y a TagsForAll pour Windows. C'est un gestionnaire de fichiers basé sur des balises. Les balises peuvent avoir une structure hiérarchique. L'interface utilisateur est très simple mais agréable. Version gratuite entièrement fonctionnelle et enregistrer les balises dans la base de données, la version Pro enregistre les balises également dans le flux NTFS dans un fichier.

het_passagier
la source
2

J'ai trouvé que la conception de l'interface utilisateur d' Elyse était magnifique. Mais c'est plus un système statique qu'il ne peut pas regarder le dossier et marquer automatiquement un nouveau fichier avec une balise par défaut.

misssprite
la source
1

Je pense aussi depuis longtemps à un système de fichiers basé sur des balises. Quelqu'un a-t-il pensé à une approche plus radicale et simple? Oublier complètement les dossiers (dossiers simulés uniquement pour des raisons de compatibilité des programmes), et mettre toutes les balises directement dans le nom du fichier.

(Nom de fichier classique) _Tag1_Tag2_Tag3 _..... (Extension de fichier)

Mydocument_tag-based-file-system_tags_file-system_stackoverflow_folder_file-name_tagfs.txt

J'aime toujours mettre autant d'informations que possible dans le nom du fichier. Vous pouvez tout trouver dans des millions de fichiers sur tous les systèmes d'exploitation possibles.

La seule limite est la longueur différente du nom de fichier dans chaque système d'exploitation, et cela devient compliqué avec les systèmes actuels.

Un système d'exploitation avancé avec pourrait accéder à un fichier comme celui-ci: Mydocument.txt Et les balises peuvent être modifiées au niveau le plus bas du système d'exploitation, comme changer le nom de fichier aujourd'hui. S'il y a soudainement un autre Mydocument.txt, il est automatiquement renommé en Mydocument (2) .txt et ainsi de suite.

Je sais que cette idée n'est pas sans problèmes supplémentaires, même pas mentionnée ici .....

Mais l'Idea est sur le point de stocker les balises dans la possibilité de bas niveau la plus basique, accessible à partir de TOUS les systèmes de fichiers passés et futurs. Et ce que tous les FS ont en commun est le nom du fichier.

Artistes sans titre
la source
Cela ressemble à une implémentation très grossière d'un DBFS.
Chuu le
Vous mélangez des pommes et des oranges. Tout cela ne fait que déplacer la structure hiérarchique du répertoire vers le nom du fichier. Ou en d'autres termes, «tout dans un seul répertoire» et «balises dans les noms de fichiers» n'a aucun sens dans un monde basé sur des balises. Et bien sûr, vous ne voudriez pas que les programmes d'application doivent gérer 10 000 fichiers, le système d'exploitation devrait donc livrer efficacement des fichiers basés sur une spécification de balise. Ainsi, l'application envoie au système d'exploitation les "balises" dont il a besoin pour "identifier le fichier" et ... vous êtes de retour aux répertoires ou à l'un des systèmes de fichiers alternatifs mentionnés ici.
CoolHandLouis
L'explorateur Windows a une limite de chemin de 255 caractères, ce qui est facilement accessible. Sinon, la limite devrait être dictée par la limite FS sur les noms de fichiers. Assez grossier ouais, mais toujours une bonne idée. Si vous souhaitez stocker les métadonnées dans le fichier et les filtrer à un bas niveau, il peut y avoir d'autres moyens moins limités, comme ajouter ou ajouter des données au fichier, ou avoir un fichier "side-car" avec le même nom de fichier mais un autre extension, qui contiendrait les métadonnées. Un autre problème est que le simple fait de renommer une balise peut nécessiter des millions d'opérations de modification de fichier.
Rolf le
En fait, cette idée a été mise en œuvre par TagSpaces .
Arnie97
0

Je ne pense pas que le balisage soit pris en charge en soi, mais BFS prend en charge certaines fonctionnalités de métadonnées assez intéressantes.

pr1001
la source