是否存在:记录文件系统结构的标准化方法


11

在工作中,我负责在标准文件系统上维护大量不同数据的组织。其中的一部分是合理的分类(通过相似性,需求,读/写访问等),但是实际上大部分是对其进行文档记录:哪些文档/文件/媒体应该放在哪里,该目录中不应该包含哪些内容, “有关稍微不同的内容,请参见../../other-dir”等。

目前,我已经readme在要记录的每个目录中使用纯文本文件对此进行了记录。如果有人不确定任何目录中的内容,那么他​​们将读取该文件。

这项工作正常,但是对于具有非平凡目录结构的任何维护者都必须经历的问题,我拥有这种原始的自定义解决方案似乎很奇怪。例如,我所知道的每家公司都有某种共享文件系统,在这种系统中,对于分类达成共识的术语很重要。以我的经验,人们只需要通过反复试验和实验来了解什么。

因此,请允许我提出一个更好的解决方案,希望您可以告诉我是否存在。任何文件系统上的任何目录都可以具有名为的隐藏纯文本文件.readme。它的内容是描述性的人类语言。它使用诸如Markdown之类的标记,仅具有到其他目录的粗体,斜体和(相对)超链接。现在,适当启用的文件浏览器将.readme在显示目录时检查名为的文件。如果存在,则将其内容解析并显示在目录路径窗口小部件附近的醒目的窗格中。可以单击其中的任何链接,并将用户带到该链接的目标目录。

我认为,实施这样的标准所付出的努力将使可用性收益获得许多倍的回报。例如,我们将拥有Nautilus,Konqueror等的插件。它可用于在Web服务器提供的标准文件列表中显示目录信息。等等。

因此,问题是:是否存在这样的事情?如果没有,为什么不呢?人们认为这是一个值得的主意吗?


由于您提到了文件系统(或特定文件系统的文件浏览器)的改进,尤其是对源代码的改进,因此也值得一提的是文件排序的急需功能。大多数文件系统具有两种主要的排序类型:字母排序和未排序。但是,用户指定的订单呢?例如,在源代码的情况下,如果文件夹(模块,程序包,父组件)中有7个文件(类,模块,组件),则它们的“逻辑”顺序通常与字母顺序不同。而是它的“依赖树”的顺序。
索林·波斯特尔尼库

因此,作为对现代文件系统的标准添加,默认情况下应具有以下三个功能:1)文件描述,2)文件夹内的自定义文件排序和3)文件标记/标签。一个人不必为了使用这3个“基本”功能而使用CMS。
索林·波斯特尔尼库

Answers:


5

据我所知,没有标准。以下是根据我的经验得出的一些想法。

进行设置,从不更改

这是大多数公司失败的原因。没有什么比不断变化的文件系统结构更糟糕的了。如果无法使其保持恒定,则纯文件系统就是组织信息的错误容器。使用数据库或内容管理系统。

使用描述性且一致的目录名称

没有人有时间读取.filing文件或其他内容。如果您的目录名称不是自我说明,那么您可能仍然迷路。

为您的目录结构编写文档

写一个文档,在其中解释每个目录的角色。举很多例子。使任何需要使用您的结构的人都可以使用它,但不要相信任何人都会阅读它。对您来说,它应该更像一本圣经。要找到此类文档的示例并不容易,因为显然公司不会发布它们。开源软件的一个示例是Filesystem Hierarchy Standard


如果这听起来有点消极,那就是。从长远来看,我从未见过基于文件系统的不平凡的存储库,其中有五个以上的用户在工作。问题在于,无论您要设置什么类别,人们都会对它们有完全不同的想法。因此,最后回答您的问题:

这样的事情存在吗?

不,我不这么认为。

如果没有,为什么不呢?

我认为:对于一个只有几个用户的小型静态层次结构,这是太过分了。对于具有许多用户的大型变化的层次结构,由于类别(=目录,文件夹)的概念无法扩展,因此无法使用。

人们认为这是一个值得的主意吗?

嗯,这是一个有趣的想法。要查看人们是否会使用它,必须有人实施它。.filing您可以将信息而不是文件存储在备用数据流中(是的,文件夹也可以具有ADS)。您可以在Linux和OSX上使用扩展属性。最大的问题可能是修补文件浏览器。


1
“没有什么比不断变化的文件系统结构更糟糕的”,除了即使在该结构不再有意义时仍坚决拒绝更改的文件系统结构。
jameshfisher 2010年

1
“使用描述性且一致的目录名称”-绝对必要,是的。不幸的是,描述性和简洁性之间存在冲突-没有人愿意在/ srv / all-hierarchical-data / accessible-only-by-office-and-admin / letters-but-not-public中键入文件的路径-notices / academic-year-of-2009 / ...等。
jameshfisher 2010年

“为目录结构编写文档”-也是一个好主意。从本质上讲,这就是我的建议。只是文档将是分散的,而不是整体的。
jameshfisher 2010年

“类别(=目录,文件夹)的概念无法扩展” –真实,但有时只是必须如此。比方说,大型软件源代码树(git.kernel.org/?p=linux/kernel/git/next/linux-next.git;a=tree)。
jameshfisher 2010年

.filing您可以将信息而不是文件存储在备用数据流中(是的,文件夹也可以具有ADS。)您可以在Linux和OSX上使用扩展属性。” 我想这可能,但会降低我认为非常重要的可移植性和透明度。如果我想将所有内容放入git repo怎么办?纯文本文件用于特定于目录的配置(例如htaccess),那么为什么不也提供文档呢?
jameshfisher 2010年

2

芥末值得一试。在您的项目根目录,纯文本源将作为一个可靠的项目概述,您可以将同一文档放在浏览器中以获得更出色的结果。

当然,它不是基于文件系统的解决方案,但是除非周围的所有文件系统都支持某种通用的东西,否则wasabi(或您自己的实现)可能是最佳选择。


1

您的想法有些优点,但恐怕当您需要这样的东西时,这实际上意味着您需要更结构化的东西。即CMS,也许只是一个轻量级的CMS,但绝对不仅仅是文本文件。

特别是如果您想限制向用户群的某些子集写入(甚至访问)特定文档(以及由此包含的文件夹)。

您没有指定操作系统,但是有一些出色的(和免费的)产品,例如alfresco,可能会比当前设置更好地为您提供服务。


我已经研究过各种CMS,但是发现与其中最古老的CMS(目录树)相比,可移植性,简单性和透明性是要付出的巨大成本。我必须管理的大多数数据都可以放入一个层次结构中。作为最后的手段,有符号链接。目录结构有时是唯一的解决方案:例如,在软件开发中,源代码从根本上讲是目录树。(记录这样的目录通常意味着坚持一种僵化和神秘的模式,最终会崩溃。我认为我的解决方案在这里也可以有所帮助。)
jameshfisher 2010年

就像我说的那样,您的想法很有价值,但我确实认为,就像其他海报的作者一样,这不能超出给定水平。您提到了源代码,但这是一种非常特殊的情况-向其中添加代码时,您无需查看现有目录即可找到应该“适合”的位置。CMS通常使您能够标记内容,因此您拥有可以像解决方案一样工作的“目录”(文件夹,空格,页面),还有一个标记系统,使人们无需查找“正确的”目录即可查找内容。恕我直言,这比符号链接更灵活,并且更不容易出错。
p.marino 2010年

1

这是一个主意。编写一个脚本,询问用户有关文件的各种问题和/或在文件内容本身中进行一些匹配,然后建议放置文件的位置或将其放置在其中。该脚本可以像您想要的那样简单或复杂。

该脚本充当文件管理系统,决策支持系统以及文件系统层次结构的有效文档。如果考虑一下,Linux Filesystem Hierarchy Standard只是个神话,因为发行版之间存在很大差异。但是,大多数Linux / Unix用户实际上并不需要自己学习文件系统层次结构,因为系统中安装了各种软件,它们可以以标准化方式(软件包管理器,配置工具等)管理层次结构。各种应用程序框架还创建脚本来管理其目录,例如django具有管理命令来创建新项目,新应用程序模块或squash迁移文件等。

这样做还有一个好处,就是如果需要以多种方式搜索文件,脚本可以创建各种符号链接,例如,基于文件作者或创建日期或您拥有的任何业务规则的索引。您可以使用符号链接模拟标记。标签是来自tags目录的简单符号链接,因此tags/mytag/myfile可能是的符号链接actual/myfile

另外,也可以在不更改用户界面的情况下更改文件系统层次结构。

文件系统是一个数据库。不是关系数据库,而是分层数据库。考虑一下它,就像管理数据库一样,您实际上并不想要求人们必须学习关系结构,而是希望该应用程序将用户需要执行的各种任务呈现给用户(例如,您每月执行一次XYZ报告,很好,然后将其放在此文件夹中,并创建此符号链接,然后您需要修改另一个文件以记录您已完成本月的报告,等等)。

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.