40,000개 항목 중 11.8GB에 대한 재귀 md5sum 확인에는 2분이 소요됩니다.
ret=$(find "${target}"/ -name ".md5sum" -size +0 | while read aFile; do cd "${aFile%/*}"; md5sum -c ".md5sum"; done | grep -v "OK";)
내가 눈치 채지 못한 명백한 속도 향상이 있습니까?
답변1
설마.
크기 + 타임스탬프가 일치할 때 검사를 완전히 포기하기로 결정하지 않는 한, 체크섬이 실제로 일치하는지 최적화할 방법은 거의 없습니다. 그러나 이를 확인하려면 실제로 파일을 모두 읽어야 하며 시간이 걸립니다.
md5sum
모든 파일을 포함하는 전역 MD5SUMS 파일을 작성하여 개별 파일에 대한 호출 수를 줄일 수 있습니다. 하지만 병목 현상은 디스크 I/O일 것이기 때문에 속도에는 큰 차이가 없을 텐데...
파일이 변경되면 약간 최적화할 수 있습니다.
파일 크기가 변경되면 md5sum을 확인할 필요 없이 파일 크기를 기록할 수도 있습니다. 크기가 다르면 자동으로 md5sum이 변경되었음을 의미하기 때문입니다.
전체 파일 체크섬 대신 블록 기반 체크섬을 수행할 수 있으므로 이전에 이미 변경 사항이 있었던 경우 특정 파일의 차이점 확인을 중지할 수 있습니다. 따라서 전체 파일을 읽을 필요가 없으며 변경된 첫 번째 블록만 읽을 수 있습니다.