Почему файловая система unix не сохраняет время создания файла?

Есть ли историческая причина? Stat хранит последнее время, последнее измененное время и последнее измененное время, но не время создания! Разве это не важная информация.

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

Заметка:

 stat -c %W <filename> 

Возвращает 0 в моей системе (fedora 22).

2 Solutions collect form web for “Почему файловая система unix не сохраняет время создания файла?”

Современные файловые системы сохраняют время создания файлового объекта. Одна из причин, почему это не было сделано ранее, вероятно, не имело никакого консенсуса относительно того, какое время создания файла должно быть, т. Е. Когда был создан файловый объект (inode) или содержимое файла (данные) и что делать, когда файл восстанавливается из резервной копии.

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

Есть веская причина не хранить время создания, а это то, что это очень плохое понятие. Если система отслеживала какое-то время и называла это «временем создания», было бы много случаев, когда это не было бы полезным временем.

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

Это можно было бы изменить, потребовав, чтобы приложение каким-то образом заявляло, что новый файл на самом деле является новой версией старого файла и поэтому должен наследовать его время создания. Но это потребует большой сложности, в отличие от традиционных временных меток (изменение содержимого, доступ и изменение inode), которые могут быть автоматически обновлены (при каждой записи, при каждом чтении, при каждом изменении метаданных).

Существуют и другие случаи, когда время создания является спорным. Когда вы копируете файл с сохраненными метаданными ( cp -p , rsync -a , …), вы создаете копию или копируете файл, включая время его создания? Когда вы восстанавливаете файл из резервной копии, следует ли восстановить время создания или время восстановления?

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

  • Не удается удалить файл из-за «Недопустимый аргумент»
  • Являются ли файлы устройств реализованы драйверами устройств или ядрами ОС?
  • Зачем вычислять контрольные суммы загруженных файлов?
  • Как найти разные файлы в UNIX на основе. расширение?
  • Как разбить файл, используя границы ключевых слов
  • Эффективно удалите первую пару строк из текстового файла
  • Переименуйте только один файл в каждом каталоге, исходя из условия
  • Удаление дубликатов файлов, но игнорирование определенных строк (например, встроенная метка времени)
  • Требование пароля для всех файлов с указанным расширением
  • выводить файл журнала с некоторого времени до некоторого времени через ssh
  • Передача: избавиться от старых не удаленных файлов?
  • Linux и Unix - лучшая ОС в мире.