Почему этот скрипт меняет ctime моего файла?

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

У меня проблема в том, что что-то в моем скрипте изменяет время файлов. Запуск stat для файла до и после сценария показывает, что ctime изменилось на время выполнения сценария. Я понимаю и ожидаю, что atimes будет изменен, и имел успех кэширование atime, чтение файла и запись оригинального atime после этого. Но ctimes не может быть изменен произвольно без чрезвычайных усилий.

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

#get stat
stat -x $path

#directory item count excluding dotfiles
find $path \( ! -regex '.*/\..*' \) | wc -l

#get size
du -ks $path

#get HFS+ attrs (Mac)
GetFileInfo -P $path

#get quicklook thumbnail (Mac)
qlmanage -t -f 2 -o /tmp/thumb.jpg $path

#get media thumbnail
ffmpegthumbnailer -i $path -o /tmp/ -s 200 -c png 

#get spotlight metadata (Mac)
mdls -plist - $path

#get mediainfo
mediainfo --Output=XML $path

#get exif
exiftool -php $path 

Кроме того, используются многие встроенные файловые методы PHP:

$splFileInfo->getSize();
$splFileInfo->getLinkTarget();
$splFileInfo->getRealPath();
$splFileInfo->getInode();
$splFileInfo->getPerms();
$splFileInfo->getOwner();
$splFileInfo->getGroup();
$splFileInfo->getCTime();
$splFileInfo->getMTime();

Я также генерирую хэш:

md5_file($path);

Есть ли добрая душа, которая может видеть в этом списке что-нибудь, что могло бы изменить ctime файла? Из того, что я понимаю, ctime должно меняться только при изменении файла или метаданных файла. Ни одна из этих команд не должна этого делать.

0 ответов

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