Skip to content
This repository has been archived by the owner on Apr 6, 2023. It is now read-only.

lahuman/dirInFiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

중복 파일 찾기

파일 관리를 잘 안하기 때문에 특정 디렉토리의 경우 중복된 파일이 다수 존재 합니다.

이를 확인하는 단순한 로직을 작성하였습니다.

md5 hash를 이용해서 파일의 hash정보로 비교 하여 더 정확하게 중복된 파일을 확인합니다.

작은 파일들을 처리할때는 문제가 없었지만, 대용량(1G 이상) 파일을 비교시 너무 많은 시간이 소요 되었습니다. 이를 초기 0.1MB buffer를 읽어서 md5 hash로 변환하여 비교 하도록 처리 하니 성능이 많이 개선되었습니다.

사용법 : node index.js ./검색디렉토리/검색파일형식

$> node index.js ./searchPath/**/*.txt
$> node index.js **/*

시작 디렉테로를 상위로 이동시키기 위해서는 ../../ (한 개만 사용하면 동작 안함)를 사용해야 한다.
LINUX에서는 상대 경로만 동작한다. (윈도우에서는 절대 경로도 잘 동작함) glob 라이브러리 확인 필요

주요 기능 :

  • md5 hash 파일 처리는 청크(Chunk) 사이즈 처리를 해서 성능을 개선한다.
    • 초기 100000byte (0.1MB) 만 로드 하여 hash 처리 후 비교 한다.
    • 용량이 0.2MB 이상인 경우만 청크 처리 하고, 이하일 경우에는 전체를 앞과 뒤의 버퍼만 읽어서 hash 처리 한다.
  • 파일 스캔시 프로그레스 처리
  • 결과를 json 형식의 파일로 생성
    • 실행한 디렉토리에 {datetime}.json 형식으로 저장됩니다.

결과 예제

SEARCHING FILES.....
 ████████████████████████████████████████ 100% | ETA: 0s | 107371/107371
DUPLICATION FILES COUNT : 16254
RESULT FILE PATH : ./1601780345187.json
Execution time (hr): 112s 18.6659ms