Существуют ли способы защиты файлов метаданных "Дата создания"?

Я недавно просматривал и реорганизовывал старые фотографии - и сталкивался со многими случаями, когда Date created метаданные не отражают дату, когда фотографии были сделаны (или отсканированы), а вместо этого дают дату и время, когда они были в последний раз скопированы из другого архивного каталога (я полагаю). Хотя в моем конкретном сценарии используются только файлы изображений, я ищу решение, которое можно применить к любым типам файлов.

Существуют ли какие-либо советы / методы, которые помогут предотвратить это в будущем в Windows/Linux, такие как создание Date created метаданные только для чтения?

Кроме того, любые советы о том, как я могу установить значение для приблизительного (или точного) Date created чтобы исправить эти файлы, которые были обновлены, будет принята с благодарностью:)

1 ответ

Решение

"Дата создания" не имеет смысла, она всегда была просто о конкретном экземпляре этого файла. Windows не позволяет менять его вручную, а в Linux вообще этого не было до недавнего времени. (И даже тогда, только некоторые файловые системы хранят время "рождения", и нет общего API для доступа к нему. Обратите внимание, что "ctime" в Linux - это не время создания.)

У вас будет гораздо больше удачи, если вы попытаетесь сохранить временную метку "Дата изменения", которая больше относится к содержимому файла. Это то, что показывает большинство файловых менеджеров. И большинство программ уже сохраняют его по умолчанию - оно хранится в Dropbox, оно хранится в Zip-архивах, оно даже передается при загрузке файлов через Интернет.

Поэтому мое общее предложение состоит в том, чтобы искать способы "заблокировать" измененную временную метку. Блокировка является более сложной (хотя, вероятно, не очень необходимой), но в Linux было бы просто написать сценарий, по крайней мере, для резервного копирования и восстановления:

#!/usr/bin/env perl
sub mtime { return (stat shift)[9]; }
print "#!/bin/sh\n";
for $file (grep {-f} glob("*")) {
    print "touch -d @".mtime($file)." '$file'\n";
}

(Ну, это резервный скрипт, который генерирует скрипт восстановления.)

Тем не менее, вы говорите о фотографиях. Я предполагаю, что они хранятся в формате JPEG, а не в "сырых" форматах. Большинство инструментов для управления фотографиями поддерживают встраивание метаданных "Exif" в JPEG, и большинство камер делают это автоматически. Таким образом, для Windows, в проводнике, вы можете просто включить столбец "Дата создания" вместо "Дата создания / изменения", и он покажет вам даты фотографий из файлов JPEG.

Другие вопросы по тегам