【问题标题】:Is there a standard way, across operating systems, of adding "tags" to files是否有跨操作系统向文件添加“标签”的标准方法
【发布时间】:2012-02-14 00:58:37
【问题描述】:

我正在编写一个脚本来备份各种不同的文件。我想做的是存储有关备份的元信息。目前我正在使用文件名,例如:

backups/cool_file_bkp_c20120119_104955_d20120102

其中c 代表文件创建日期时间,d 代表“数据时间”,它代表cool_file 实际包含的内容。我目前使用“数据时间”的原因是以后的备份可能是由同一个文件制作的,在这种情况下,我知道我可以安全地替换相同“数据时间”的先前备份而不会丢失任何信息。

这似乎是一种糟糕的做事方式,但它似乎确实具有不依赖于操作系统的好处。有没有更好的办法?

仅供参考:我正在使用 Python 编写备份创建脚本,目前需要在 Windows XP、2003 和 Redhat Linux 上运行。

编辑:解决方案: 从下面的答案中,我推断文件上的元数据并未以标准方式得到广泛支持。鉴于我的目标是将元数据与文件紧密结合,似乎将文件与元数据文本文件一起归档是可行的方法。

【问题讨论】:

  • 另一种解决方案是将元数据存储在文件本身中,或者使用包含 md5hash、creationtime、datatime 列的表的额外文件/数据库。
  • 我可以看到很多将元数据存储在外部文件中的方法,但实际上我看不出您当前的系统有什么问题!

标签: python windows linux file filesystems


【解决方案1】:

我会采取以下两种方法之一:

在 backub 目录上创建一个包含所需元数据的独立文件 - 这可能是人类可读形式的东西,只是为了让生活更轻松,例如 json 数据结构或类似“ini”的文件。

另一种方法是归档复制的文件 - 可能使用“zip”,然后将文本文件与所需的元数据捆绑在一起。

创建 zip 存档以将您想要的文件组合在一起的想法用于多个地方,例如 java .jar 文件、Open Document Format(由多个 office sutres 创建的 office 文件)、Office Open XML(Microsoft 特定的 office 文件),甚至 Python 语言都拥有彩蛋。

Python 标准库中的 ziplib 模块具有完成此操作所需的所有工具 - 您只需在与原始文件捆绑在一起的文件中使用字典的表示形式即可获得所需的尽可能多的元数据。

当然,在任何这些方法中,您还需要一个帮助脚本来让您查看和过滤文件中的元数据。

【讨论】:

    【解决方案2】:

    不同的文件系统(不是不同的操作系统)具有不同的存储元数据的能力。 NTFS 有很多可能性,而 FAT 非常有限,而 ext* 介于两者之间。没有一个广泛的(主观术语,是的)文件系统支持您可以使用的自定义标签。因此,不存在使用此类标签的标准方法。 在 Windows 上曾尝试引入扩展属性,但这些以非常棘手的方式实现,几乎无法使用。

    因此,在文件名中添加任何内容仍然是唯一可行的方法。请记住,文件系统对文件名和文件路径长度有限制,使用这种方法可能会超出限制,所以要小心。

    【讨论】:

      猜你喜欢
      • 2018-07-11
      • 2010-09-14
      • 1970-01-01
      • 2012-08-16
      • 2011-12-07
      • 1970-01-01
      • 1970-01-01
      • 2010-12-20
      • 2012-09-25
      相关资源
      最近更新 更多