我正在编写一个脚本来备份各种不同的文件。我想要做的是存储有关备份的元信息。目前我正在使用文件名,例如:
backups/cool_file_bkp_c20120119_104955_d20120102
其中c
表示文件创建日期时间,d
表示“数据时间”,表示cool_file实际包含的内容。我目前使用“数据时间”的原因是以后的备份可能是由同一个文件组成的,在这种情况下,我知道我可以安全地替换相同“数据时间”的先前备份,而不会丢失任何信息。
这似乎是一种糟糕的做事方式,但似乎确实有非依赖性的好处。还有更好的方法吗?
仅供参考:我使用Python编写备份创建脚本,目前需要在Windows XP,2003和Redhat Linux上使用它。
编辑:解决方案: 从下面的答案中,我推断出文件上的元数据并没有以标准方式得到广泛支持。鉴于我的目标是将元数据与文件紧密耦合,似乎将文件与元数据文本文件一起存档是可行的方法。
答案 0 :(得分:3)
我会采取两种方法之一:
在backub目录上创建一个包含所需元数据的独立文件 - 这可能是人类可读的形式,只是为了让生活更轻松,例如json数据结构或类似文件的“ini”。
另一个是归档复制的文件 - 可能使用“zip”,并捆绑一个带有所需元数据的文本文件。
创建zip存档以组合您想要的文件的想法在几个地方使用,例如java .jar文件,Open Document Format(由多个office sutres创建的offfice文件),Office Open XML(Microsoft特定的offic文件) ),甚至Python语言都有自己的蛋。
Python标准库中的ziplib模块具有完成此任务所需的所有工具 - 您可以在与原始文件捆绑在一起的文件中使用字典表示,以获得所需的元数据。
当然,在任何这些方法中,您还需要一个帮助脚本来查看和过滤文件上的元数据。
答案 1 :(得分:1)
不同的文件系统(不同的操作系统)具有不同的存储元数据的功能。 NTFS有很多可能性,而FAT非常有限,而ext *介于两者之间。广泛(主观术语,是)文件系统都不支持您可以使用的自定义标签。因此,没有标准的方法来处理这样的标签。 在Windows上有尝试引入扩展属性,但这些是以几乎无法使用的棘手方式实现的。
因此,将任何可能的内容放入文件名仍然是唯一可行的方法。请记住,文件系统对文件名和文件路径长度有限制,使用这种方法可以超出限制,所以要小心。