Мне нужен разумный способ использовать PHP для проверки целостности большого количества файлов, которые находятся ниже каталога на определенном сервере (большое количество здесь означает 6000 и более).Как проверить целостность связки файлов?
В принципе, я хочу знать, были ли они изменены. Решение, которое я придумал, чтобы вычислить значение хэш всех файлов следующим образом:
$accnum = 1;
$modulo = PHP_INT_MAX >> 5;
foreach ($files as $file) {
$crc32 = crc32(md5_file($file));
$accnum = ($accnum % $modulo) * 31 + $crc32;
}
$hash = md5($accnum);
я затем записать хэш где-то злоумышленник не может добраться до него.
Затем, чтобы проверить фальсификацию, я пересчитываю хэш и сравниваю его с записанным значением. Если он отличается, я знаю, что по крайней мере один из файлов был изменен.
Вопросы:
- Это разумный способ сделать это?
- Если нет, как мне контролировать целостность большого количества файлов?
Чтобы ускорить процесс, вы также можете сохранить последнюю измененную дату файла и сравнить только хэш, если дата изменилась. Это должно ускорить приложение, поскольку проверка даты должна быть менее трудоемкой, чем проверка хэша. Я не знаю, является ли это лучшим решением для вашего дела, но это то, что нужно учитывать. – Adon
Другая возможность - «посмотреть» каталог для событий «файловой системы». Может быть полезно что-то вроде [inotify-tools] (https://github.com/rvoicilas/inotify-tools/wiki)? –
Ваш метод hash будет работать нормально. Также сохраняйте «автономные резервные копии» своего собственного веб-сайта, а также «резервные копии», предоставляемые «хостинг-провайдером». –