중복 파일을 찾는 가장 효율적인 방법은 무엇입니까?

중복 파일을 찾는 가장 효율적인 방법은 무엇입니까?

총 수백만 개의 파일(총 테라바이트)이 들어 있는 폴더가 많이 있습니다. 모든 파일에서 중복된 파일을 찾고 싶습니다. 이상적으로 출력은 간단한 치트 목록입니다. 내 스크립트를 사용하여 추가로 처리하겠습니다.

fdupes파일을 비교하기 위해 "파일 크기 및 MD5 서명"을 사용하는 명령이 있다는 것을 알고 있습니다 .

나에게 명확하지 않은 것은 내가 원하지 않는 고유한 크기의 파일을 읽고 있는지(및 해당 해시가 계산되었는지) 여부입니다. 제 경우에는 데이터 볼륨이 엄청나서 꼭 필요한 것보다 더 많은 디스크 I/O를 수행하지 않도록 주의가 필요했습니다. 또한 사용되는 임시 공간의 양을 최소화해야 합니다.

답변1

FS 린트백엔드는 findup여러분에게 꼭 필요한 것일 수도 있습니다.

FSlint는 파일을 검사하고 다양한 크기의 파일을 필터링합니다. 그런 다음 정확히 동일한 크기의 나머지 파일을 확인하여 하드 링크가 아닌지 확인하십시오. 사용자가 결과를 "병합"하도록 선택하면 이전 검색에서 하드 링크 파일이 생성될 수 있습니다. FSlint는 파일이 하드 링크가 아니라고 판단하면 md5sum을 사용하여 파일에 다양한 서명이 있는지 확인합니다. md5sum 충돌을 방지하기 위해 FSlint는 sha1sum 검사를 사용하여 나머지 파일의 서명을 다시 검사합니다.

https://booki.flossmanuals.net/fslint/ch004_duplicates.html

답변2

린트파일 시스템에서 중복 제거와 같은 작업을 수행하고, 후속 실행 속도를 높이기 위해 필요한 경우 xattrs를 통해 정보를 캐시하고, 사용자 정의 방식으로 사용할 수 있도록 메타데이터를 json 형식으로 제공할 수 있는 매우 효과적인 도구입니다.

rmlint finds space waste and other broken things on your filesystem and offers to remove it. It is able to find:

Duplicate files & directories.
Nonstripped Binaries
Broken symlinks.
Empty files.
Recursive empty directories.
Files with broken user or group id.

~에서사용자 설명서—rmlint

답변3

예, 크기가 다른 파일과 일치하면 전체 md5가 생성될 것 같습니다. 이는 낭비로 이어질 수 있습니다. 대용량 파일의 경우 더 효율적인 접근 방식은 첫 번째 청크를 md5하고 일치하는 경우에만 자세히 살펴보는 것입니다.

즉, 크기를 확인하고, 일치하면 첫 번째 블록(512k)의 md5를 확인하고, 일치하면 다음 2개 블록(1024k)의 md5를 확인합니다.

관련 정보