Задать вопрос
@KenKup11

Можно ли как то вычислить контрольную сумму для папки?

Добрый день.
Появилась необходимость посчитать контрольную сумму для папки (например MD5).
В гугле не удалось найти ответ (может плохо искал).
Возможно ли это вообще сделать?
  • Вопрос задан
  • 1496 просмотров
Подписаться 1 Простой 4 комментария
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 2
Compolomus
@Compolomus Куратор тега PHP
Комполом-быдлокодер
function getMd5DirHash(string $dir): string
{
    $array = [];
    $dir = realpath($dir); 
    $fileSPLObjects =  new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir), RecursiveIteratorIterator::CHILD_FIRST);
    foreach($fileSPLObjects as $fullFileName => $fileSPLObject ) {
        if ($fileSPLObject->isFile()) {
            $array[] = $fullFileName;
        }
    }
    $md5 = array_map('md5_file', $array);

    return md5(implode('', $md5));
}

расписал чтоб понятнее было, можно улчшить
$array[] = md5_file($fullFileName);
#$md5 = array_map('md5_file', $array);

return md5(implode('', $array));
Ответ написан
@rPman
Запакуй папку tar-ом, без сохранения архива, через пайпы передай в md5sum, получишь результат
$md5=explode(' ',`tar -cf - /path/to/dir | md5sum`)[0];
upd. осторожно, используй относительные пути а не прямые, так как этот путь файлов так же хешируется

на php делать все будет тупо сложнее и медленнее

p.s. новые версии tar поддерживают --order=name чтобы гарантировать хоть какой то порядок файлов
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽