使用标签而不是文件夹的文件系统?


122

我的文件一团糟,我尝试将它们构造成名称描述递归类分解意义的文件夹,但后来我在寻找文件时又找不到文件(一个文件可能存在于许多文件夹中)。

哪种文件系统允许我通过组合标签而不是使用文件夹来查找文件?

如果有这样的文件系统,我不确定操作系统将如何应对,因为它们非常依赖于文件夹系统。我遇到了tag2find,这还不错。它解决了我现在找不到东西的问题,但这是一个应用程序,而不是文件系统。



2
(截至2013年),Gmail已在您的电子邮件中安装了该系统。现在让他们在Google云端硬盘中实施它!
chharvey

这个问题类似于这一个
chharvey

2
我已经考虑过了,这样的系统可以完全摆脱文件夹甚至文件名(更不用说扩展名了)。以这种方式,文件的路径,名称和唯一标识符将只是应用于该文件的一组标记。即使这样,也可能会有不止一个文件带有相同的标签集,为什么不这样呢。表示法可以相同,例如document/report/2015/finance/v2.01,标记的顺序无关紧要。这样做的好处是,您可以只提供一些标签而不是全部标签,然后仍然可以找到所需的文件。
Petruza 2015年

1
@Petruza我认为每个文件都有唯一的ID标签可能会使标签管理变得棘手。除了更通用的标签外,文件名仍然是有用的属性。
jiggunjer

Answers:


34

您要的是数据库文件系统。我知道一种名为DBFS的 Linux实验性实现。微软开始开发Windows Future Storage(WinFS) -计划随Vista一起提供,但由于技术问题,该项目被推迟,据我所知最终被取消了。NTFS还能够存储文件的元数据,但不能存储功能齐全的数据库文件系统的扩展。

对于操作系统的核心来说,将这样的文件系统集成到操作系统中应该不那么复杂-它可以简单地遵循分层模型。复杂的部分是(图形)外壳,必须向用户公开文件系统的结构和功能。


2
是的,WinFS在2006年左右被取消了:p。可能会尝试DBFS。
clinux

5
我相信它们也称为语义文件系统或关系文件系统。
jiggunjer

37

这是我使用Google找到的一些文件系统。

TagFS-Stephan Bloehdorn和MaxVölkel撰写的“分层文件系统的标记语义”论文,2006年 http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.60.4187

dhtfs-“基于标记的文件系统,基于与文件相关联的标记提供动态目录层次结构”,是一种可用的实现,最新发布的版本为 http://code.google.com/p/dhtfs/

Tagsistant-正在积极开发中的“用于Linux和BSD的推理语义文件系统”项目 http://www.tagsistant.net/

Leaftag-“为Linux桌面添加标签”的另一种实现方式,最新版本2006年 http://www.chipx86.com/w/index.php/Leaftag

与操作系统集成时,我认为应该没有那么困难。操作系统高度依赖于文件系统层次结构,但是基于标签的文件系统可以模仿目录结构。例如,在基于标签的文件系统中,该路径/etc/init.d将给出所有带有两个标签的文件,即“ etc”和“ init.d”。对于用其他标签以及这两个标签标记的文件,它们的额外标签可以显示为/etc/init.d中的目录。如果文件a.txt具有三个标记,即“ etc”,“ init.d”和“ asdf”,则“ asdf”将显示为/etc/init.d中的目录,并且a.txt的完整路径将变为/等/init.d/asdf/a.txt。


@clinux:这是最近的另一个Fuse :: TagLayer,尽管它似乎是只读的。
isync

35

我是Linux程序TMSU的作者,该程序可让您标记文件并在基于标记的文件系统中查看它们。

这是一些示例用法:

$ 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

和虚拟文件系统:

$ 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

文件名中的数字是标识符,可以使文件名保持唯一。这些是指向文件原始位置的符号链接。

$ 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

它仍在积极发展中。在撰写本文时(2014年10月),可以使用0.4.2,但我很快就会发布0.5.0。


1
在Windows上可以使用此方法吗?
乔纳森(Jonathan)

1
@Jonathan,是的,您可以尝试使用旧的Windows版本。请注意,这有点问题,并且不支持VFS。我一直想去做一个适当的端口,但是我想首先使核心处于良好状态。
Paul Ruane 2015年

保罗真棒:)
乔纳森(Jonathan)


4

尝试tagfs。这是一个基于保险丝的用户空间文件系统。它可以在标签过滤器视图中显示源目录中的标签目录。

例如,假设您有一个标记为“印度”和“照片”的目录“度假印度”,以及一个标记为“西班牙”和“照片”的目录“度假西班牙”。您可以通过输入路径“ / my_mountpoint / photos”来过滤所有照片。

目录通过简单的文本文件标记。目录中名为“ .tag”的文件包含标签。多个标签用换行符分隔。


3

我在问自己有关文件系统文件标签的相同问题时遇到了这个问题。然后,我遇到了适用于Windows XP / Vista的名为TaggedFrog的应用程序,它可以解决问题。还没有尝试过,但是看起来很有希望。

虽然不希望浏览数千个文件!无论如何,我将被迫在某个时候升级到Win7,并可以尝试使用其本机标记。


我相信TaggedFrog也支持Windows的较新版本。
jiggunjer


2

有用于Windows的TagsForAll。它是基于标签的文件管理器。标签可以具有层次结构。用户界面非常简单,但很好。完全免费的免费版本,并将标签保存在数据库中,Pro版本的保存标签也在NTFS流中保存到文件中。


2

我发现Elyse的UI设计很棒。但这是一个静态系统,它无法监视文件夹并自动使用默认标签来标记新文件。


1

长期以来,我一直在考虑基于标签的文件系统。有没有人考虑过更激进和简单的方法?要完全忘记文件夹(仅出于程序兼容性的考虑,将文件夹模拟为文件夹),然后将所有标签直接放入文件名中。

(经典文件名)_Tag1_Tag2_Tag3 _.....(文件扩展名)

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

我一直喜欢在文件名中放入尽可能多的信息。您可以在每个可能的操作系统上找到数百万个文件中的所有内容。

唯一的限制是evey OS中的文件名长度不同,并且它与当前系统混在一起。

具有的高级操作系统可以访问以下文件:Mydocument.txt,并且可以在操作系统的最低级别中编辑标签,例如,今天更改文件名。如果突然有另一个Mydocument.txt,它将自动重命名为Mydocument(2).txt,依此类推。

我知道这个想法并非没有其他问题,这里也没有提到。

但是,Idea将以最基本的底层可能性存储标签,可以从所有过去和将来的文件系统中访问它们。所有FS的共同点是文件名。


这听起来像是DBFS的非常粗糙的实现。
Chuu

您正在混合苹果和橙子。所有这一切都是将层次结构从目录移动到文件名。换句话说,在基于标签的世界中,“全部在一个目录中”和“文件名中的标签”没有意义。当然,您不希望应用程序必须处理10,000个文件,因此操作系统将不得不根据标签规范有效地交付文件。因此,应用程序向操作系统发送了其“识别文件”所需的“标签”,并且...您就直接回到目录或此处提到的其他文件系统之一。
CoolHandLouis

Windows资源管理器的路径限制为255个字符,可以轻松实现。否则,该限制应由文件名的FS限制决定。是的,还不错,但是还是个好主意。如果要将元数据存储在文件中并以较低级别对其进行过滤,则可能存在其他较少限制的方式,例如将数据追加或前置到文件中,或使用文件名相同但名称不同的“ sidecar”文件扩展名,其中将包含元数据。另一个问题是,简单地重命名标签可能需要数百万次文件修改操作。
罗尔夫

实际上,这个想法是由TagSpaces实现的。
Arnie97

0

我认为本身没有标签支持,但BFS支持一些非常酷的元数据功能。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.