Как в Mac OS X изменить дату создания или модификации файла

По разным причинам иногда возникает необходимость изменить дату и время создания файла. Или изменить дату и время изменения файла. Есть несколько способов на Mac OS X изменить дату и время создания файла, а также дату и время модификации файла.

Утилита touch

Вариант изменения даты модификации через консольную утилиту touch.

Ключ -t позволяет изменить время доступа и модификации на указанное время.

Дата и время указывается в следующем формате (ГГГГММДДччмм.сс):

ГГГГ – год
ММ – месяц (01-12)
ДД – день месяца (01-31)
чч – часы (00-23)
мм – минуты (00-59)
сс — секунды (00-59)

Пример установки даты и времени на 21.02.2018 03:49:27

Зададим год 2018, месяц 02, день 21, час 03, минут 49, и 27 секунд. Секунды можно не указывать, тогда их не пишем (и точку тоже нужно убрать).

Как это выглядит в команде: 201802210349.27

Установить дату модификации и последнего открытия файла

# Устанавливается одновременно:
# Установить дату и время модификации файла в 21.02.2018 03:49:27
# Установить дату и время последнего доступа к файлу в 21.02.2018 03:49:27
touch -t 201802210349.27 /home/users/admin/foto.jpg

Примечание:
Если устанавливаемая нами дата больше, чем дата создания файла, то будет изменена только метка времени модификации, то есть дата изменения файла и метка времени последнего доступа к файлу. А если мы устанавливаем время модификации меньше, чем текущая дата создания файла, то изменится не только дата модификации файла, но и и дата создания файла.

Установить текущую дату модификации и последнего открытия файла

# Устанавливается одновременно:
# Установить текущую дату и время модификации файла.
# Установить текущую дату и время последнего доступа к файлу.
touch -am /home/users/admin/foto.jpg

Установить дату создания файла в прошлом

# Устанавливается одновременно:
# Установить дату и время создания файла в прошлом (от текущей даты файла)
# Установить дату и время модификации файла в 21.02.2018 03:49:27
# Установить дату и время последнего доступа к файлу в 21.02.2018 03:49:27
touch -t 201503240122.17 /home/users/admin/foto.jpg

Примечание:
Вы можете сразу не увидеть изменения даты по пункту "последний доступ к файлу", т.к. оно кешируется системой. Но если вы сделаете копию (дублирование) файла, вы увидите, что дата последнего открытия файла изменилась.

 

На этом к сожалению все с утилитой touch. Эта утилита не позволяет изменить дату создания файла в плюс (будущее) от текущей даты файла. Также магическим образом не работают остальные ключи утилиты, несмотря на их привлекательное описание в man BSD.

Но есть еще один вариант изменения некоторых дат.

Утилита SetFile

Утилита setfile позволяет устанавливать и изменять атрибуты файлов в файловой системе HFS+ (Mac OS Extented). Вот она то и потребуется нам, чтобы мы могли установить/заменить дату создания файла. Для работы утилиты требуется установка инструментов разработчика, то есть пакета Xcode.

Установить любую дату создания файла

# Установить любую дату и время создания файла
/usr/bin/SetFile -d '12/30/2017 12:00:00 PM' /home/users/admin/foto.jpg

Установить дату изменения файла

# Установить дату и время изменения файла.
/usr/bin/SetFile -m '12/31/2017 12:10:00 PM' /home/users/admin/foto.jpg

Примечание:
Если устанавливаемая нами дата модификации файла старше (меньше) текущей даты создания файла, то тогда также изменятся и дата создания файла и дата последнего открытия файла. Но тем не менее, если это нужно (не знаю, зачем), после этой команды можно установить/восстановить произвольно нужную дату создания файла, выполнив еще раз команду с флагом -d.

В помощь:

Как посмотреть информацию о датах о файле через консоль (терминал)?

Чтобы посмотреть всю информацию о файле или конкретно по указанным типам дат, можно воспользоваться консольной утилитой stat

# Посмотреть всю информацию о файле
stat /home/users/admin/foto.jpg

# Посмотреть время последнего обращения к файлу (открытия)
stat -f %Sa /home/users/admin/foto.jpg

# Посмотреть время последнего изменения файла
stat -f %Sm /home/users/admin/foto.jpg

# Посмотреть время добавления файла в систему
stat -f %Sс /home/users/admin/foto.jpg

# Посмотреть дату создания файла
stat -f %SB /home/users/admin/foto.jpg

 

В итоге с помощью двух таких разных утилит мы можем решить не одну, так другую задачу. 

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

7 комментариев к “Как в Mac OS X изменить дату создания или модификации файла”

  1. Таким образом изменил "дату создания" и "дату изменения" фото, но когда заливаю их в приложение фото, всё равно отображается исходная дата создания фото. Почему так?
    1. Сходу сложно ответить, надо детально смотреть. Возможно есть скрытая копия изображения или еще что. Может просто КЕШ фотографий в библиотеке не обновился. Если Вы успешно изменили данные файла и Вы это видите в свойствах файла, они не могут вернуться обратно.
  2. Нашёл в информации по фото рядом с exif, TIFF информацию с датой, которая не изменилась, как её можно изменить через терминал встроенными инструментами? или удалить TIFF метаданные?
    1. Я не совсем понял, что такое tiff, ведь это файл растрового изображения, это не записи данных внутри файла. У Вас что за файл по расширению? Просто в этом формате обычно не хранят изображения в домашней библиотеке. Там или jpeg или png.
  3. Лучшее пояснение, что удалось увидеть. Спасибо автор за то, что поделился именно способом решения вопроса через touch. Везде пытаются решить вопрос какими-то сложными манипуляциями с установкой дополнительных программ.

Добавить комментарий для Валерий Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *