Существует ли в операционных системах стандартный способ добавления тегов к файлам? - PullRequest
5 голосов
/ 19 января 2012

Я пишу скрипт для создания резервных копий различных файлов.Я хотел бы сохранить метаинформацию о резервной копии.В настоящее время я использую имя файла, например:

backups/cool_file_bkp_c20120119_104955_d20120102

Где c представляет дату и время создания файла, а d представляет "время данных", которое представляет собой то, что на самом деле содержит файл cool_file.Причина, по которой я в настоящее время использую «время данных», заключается в том, что более поздняя резервная копия может быть сделана из того же файла, и в этом случае я знаю, что могу смело заменить предыдущую резервную копию того же «времени данных», не теряя никакой информации.

Кажется, это ужасный способ сделать что-то, но, похоже, у него есть преимущество в том, что он не зависит от ОС.Есть ли лучший способ?

К вашему сведению: я использую Python для создания сценария создания резервной копии, и в настоящее время мне нужно, чтобы это работало в Windows XP, 2003 и Redhat Linux.

РЕДАКТИРОВАТЬ: РешениеИз приведенных ниже ответов я сделал вывод, что метаданные о файлах широко не поддерживаются стандартным способом.Учитывая, что моя цель состояла в том, чтобы тесно связать метаданные с файлом, похоже, что архивация файла вместе с текстовым файлом метаданных - это путь.

Ответы [ 2 ]

3 голосов
/ 19 января 2012

Я бы выбрал один из двух подходов:

создать автономный файл в директории backub, который будет содержать нужные метаданные - это может быть что-то в удобочитаемой для человека форме, просто чтобы сделать жизньпроще, например, структура данных json или файл типа «ini».

Другой способ - архивировать скопированные файлы - возможно, используя «zip», и связать вместе с ним текстовый файл с желаемой мета-data.

Идея создания zip-архивов для группировки файлов, которые вы хотите объединить, используется в нескольких местах, например, в java-файлах .jar, в Open Document Format (офисных файлах, созданных несколькими офисными сутрами), Office Open.XML (специальные файлы Microsoft для Microsoft) и даже собственные яйца на языке Python.

Модуль ziplib в стандартной библиотеке Python имеет все необходимые инструменты для этого - вы можете просто использовать представление словаря в файле, который связан сисходный, чтобы иметь столько метаданных, сколько вам нужно.

В любом из этих подходов вам также понадобитсяРазумеется, d вспомогательный скрипт для просмотра и фильтрации метаданных в файлах.

1 голос
/ 19 января 2012

Разные файловые системы (не разные операционные системы) имеют разные возможности для хранения метаданных.NTFS имеет множество возможностей, в то время как FAT очень ограничен, и ext * находятся где-то посередине.Ни одна из широко распространенных (субъективный термин, да) файловых систем не поддерживает пользовательские теги, которые вы можете использовать.Следовательно, не существует стандартного способа работы с такими тегами.В Windows была попытка ввести расширенные атрибуты, но они были реализованы таким хитрым способом, что были почти непригодны для использования.

Таким образом, добавление всего, что вы можете в имя файла, остается единственным подходом к работе.Помните, что файловые системы имеют ограничения на имя файла и длину пути к файлу, и при таком подходе вы можете превысить ограничение, поэтому будьте осторожны.

...