Подтвердить что ты не робот

Разница между python - getmtime() и getctime() в системе unix

Может ли кто-нибудь указать, в чем разница между os.path.getmtime(path) и os.path.getctime(path) в системах unix. В соответствии с defnition в документах python:

os.path.getmtime(path)

Возвращает время последней модификации пути. Возвращаемое значение является число, указывающее количество секунд с эпохи (см. время модуль). Поднять os.error, если файл не существует или недоступен.

os.path.getctime(path)

Вернуть системы ctime, которые на некоторых системах (например, Unix) являются время последнего изменения, а на других (например, Windows) - это время создания пути. Возвращаемое значение - это число, указывающее номер секунд с эпохи (см. модуль времени). Поднимите os.error, если файл не существует или недоступен.

Это в основном означает, что они одинаковы при использовании в UNIX/системах?

#!/usr/bin/python
import os
print os.path.getmtime('File')
print os.path.getctime('FIle')

Оба отпечатка получают одно и то же значение.

В основном я ищу дату последнего создания файла, а не дату последнего изменения. Есть ли способ добиться того же в unix?

4b9b3361

Ответ 1

mtime ссылается на последний раз, когда содержимое файла было изменено. Это может быть изменено на unix-системах различными способами. Часто, когда вы восстанавливаете файлы из резервной копии, mtime изменяется, чтобы указать, когда последний раз содержимое было изменено до того, как была сделана резервная копия.

ctime указывает на то, что последний раз был изменен inode. Это невозможно изменить. В приведенном выше примере с резервной копией ctime будет по-прежнему отражать время восстановления файла. Кроме того, ctime обновляется, когда изменяются такие вещи, как права доступа к файлам.

К сожалению, обычно нет способа найти исходную дату создания файла. Это ограничение базовой файловой системы. Я считаю, что файловая система ext4 добавила дату создания в индексный дескриптор, и Apple HFS также поддерживает его, но я не уверен, как вы собираетесь его восстановить в Python. (Функция C stat и соответствующая команда stat должны показать вам эту информацию о файловых системах, которые ее поддерживают.)

Ответ 2

Из man-страницы stat, в которой os.path.getmtime() и os.path.getctime() используются в системах Unix:

Поле st_mtime изменяется путем модификации файла, например, mknod(2), truncate(2), utime(2) и write(2) (больше нуля). Более того, st_mtime каталога изменяется путем создания или удаления файлов в этом каталоге. Поле st_mtime не изменяется для изменений владельца, группы, количества жестких ссылок или режима.
...

Поле st_ctime изменяется путем записи или установки информации об индексе (т.е. владельца, группы, количества ссылок, режима и т.д.).

Нет, это не то же самое.

Ответ 3

Это технически не вопрос программирования и поэтому не должен быть в переполнении стека, но вы можете найти ответы, которые вы ищете здесь, является первым результатом Google для ctime mtime atime. Краткий ответ: ctime изменяется при изменении прав на файл или разрешений, а также при изменении данных в файле. mtime изменяется только при изменении данных в файле.