Можно ли как то вычислить контрольную сумму для папки?
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));
Запакуй папку tar-ом, без сохранения архива, через пайпы передай в md5sum, получишь результат
$md5=explode(' ',`tar -cf - /path/to/dir | md5sum`)[0];upd. осторожно, используй относительные пути а не прямые, так как этот путь файлов так же хешируется

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

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