2013-03-12 3 views
0

У меня есть набор из нескольких тысяч файлов, которые автоматически перегенерируются каждые 24 часа (например, ports-readmes на OpenBSD).shell: сохранить и восстановить mtime на основе sha1 hash

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

Не изменяя исходное приложение, которое перегенерирует файлы на месте, как я буду кэшировать mtime на основе пар файлов/sha1 и восстанавливать после регенерации, если sha1 остается неизменным? Предпочитаете python, но любое решение UNIX приветствуется.

(я требую это для сайта, так как карта сайта спецификации имеет только lastmod для управления версиями.)

+0

SO не является службой кодирования. – ikegami

+0

Это совершенно общая проблема и, безусловно, может быть решена с помощью довольно небольшого скрипта. – cnst

+1

@cnst - Согласовано. Поэтому попробуйте написать этот небольшой скрипт. Если у вас есть проблемы, вернитесь с конкретным вопросом. Тогда вы получите много ответов. –

ответ

1

Не ясно, что именно помощь вам требуется. Вот несколько мест, чтобы начать:

  • Вы можете использовать os.walk, os.listdir или glob.glob для создания списка файлов.
  • Вы можете использовать os.stat, чтобы определить последнее изменение времени.
  • Вы можете использовать hashlib.md5(open(fname).read()).hexdigest(), чтобы получить md5.
  • Вы можете использовать os.utime, чтобы установить время изменения файла.
  • Вы можете использовать json.dump и json.load сохраняться в mtimes от одного прогона к другому (есть и другие варианты)
Смежные вопросы