Skip to content

geekgoing/DCleaner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DCleaner

DCleaner는 macOS에서 완전히 같은 중복 파일을 찾고, 사용자가 직접 검토한 뒤 휴지통으로 안전하게 정리하도록 돕는 앱입니다.

English: README.en.md

DCleaner의 D는 Duplicate, Desktop, Download를 의미합니다. Desktop, Downloads, 그리고 사용자가 추가한 폴더에서 반복 다운로드된 PDF, 여러 번 저장된 스크린샷, 복사된 압축 파일, file (1).pdf, copy, 복사본처럼 중복 파일처럼 보이는 항목을 검토할 수 있습니다.

스크린샷 / 데모

샘플 데이터로 스캔한 중복 검토 화면과 정리 완료 화면입니다.

DCleaner 중복 검토 화면

DCleaner 정리 완료 화면

데모 GIF 또는 MP4는 추후 docs/demo.gif 또는 docs/demo.mp4로 추가할 수 있습니다.

사용 방법

소스에서 앱 번들을 만들고 실행합니다.

git clone https://github.com/geekgoing/DCleaner.git
cd DCleaner
./Scripts/package-app.sh
open dist/DCleaner.app

개발 중에는 아래 명령으로 디버그 앱을 바로 열 수 있습니다.

./Scripts/open-app.sh

앱 사용 흐름은 다음과 같습니다.

  1. 기본 Desktop/Downloads 위치를 사용하거나 폴더를 추가합니다.
  2. Scan Folders를 실행합니다.
  3. 중복 그룹을 검토하고, 가능한 경우 PDF 또는 이미지 프리뷰로 확인합니다.
  4. 각 그룹에서 최소 한 파일은 유지합니다.
  5. 선택된 중복 파일을 Move to Trash로 macOS 휴지통에 이동합니다.
  6. 정리 후 Cleanup complete 화면에서 어떤 파일이 이동됐는지 확인합니다.

주요 기능

  • 파일 크기와 SHA-256 해시를 사용하는 정확한 중복 탐지
  • 사용자가 먼저 검토하는 정리 흐름
  • PDF 및 이미지 프리뷰 패널
  • 흔한 복사본 이름 패턴 감지
  • 정리 후보 자동 선택 규칙
  • 최근 수정 파일이 자동 선택되지 않게 보호하는 옵션
  • 숨김 파일 스캔 옵션
  • .git, node_modules, build, DerivedData 같은 개발/캐시 폴더 제외 옵션
  • Finder에서 보기 및 파일 열기 액션
  • 휴지통 이동 후 정리 결과와 이동한 파일 목록 표시

환경설정

앱의 Settings에서 스캔과 화면 표시 방식을 조정할 수 있습니다.

  • Minimum size: 스캔할 최소 파일 크기를 정합니다. Any, 100 KB, 1 MB, 10 MB 중 선택할 수 있습니다.
  • Protect recent: 최근 수정된 파일이 자동 선택되지 않도록 보호합니다. Off, 1 day, 3 days, 7 days, 14 days, 30 days 중 선택할 수 있으며 기본값은 7 days입니다.
  • Auto-select keeps: 자동 선택이 어떤 파일을 유지할지 정합니다. 경로 + 최신, 최신 수정일, 복사본 이름 우선 전략을 사용할 수 있습니다.
  • Ignore dev/cache folders: .git, node_modules, build, DerivedData 같은 개발/캐시 폴더를 스캔에서 제외합니다. 기본값은 켜짐입니다.
  • Scan hidden files: dotfile 및 Finder 숨김 항목까지 스캔에 포함합니다.
  • Theme: 시스템, 라이트, 다크 모드를 선택합니다.
  • Language: 시스템 언어, 영어, 한국어를 선택합니다.

중복 선택 기준

중복 판정과 자동 선택은 서로 다른 단계입니다.

중복 판정은 파일 종류와 관계없이 동일한 기준을 사용합니다. 이미지, PDF, 압축 파일, 텍스트 파일 모두 먼저 파일 크기가 같은 후보끼리 묶이고, 그 다음 SHA-256 콘텐츠 해시가 같은 파일만 중복으로 판단합니다. 파일 이름, 생성일, 수정일, 확장자는 중복 판정에 사용하지 않습니다. 같은 사진처럼 보여도 리사이즈, 재압축, 메타데이터 변경 등으로 바이트가 달라지면 중복으로 보지 않습니다.

자동 선택은 이미 중복으로 판정된 그룹 안에서만 동작합니다. 각 그룹에서 유지할 파일 1개를 먼저 고르고, 나머지를 정리 후보로 선택합니다. 최근 파일 보호 설정에 걸린 파일은 정리 후보로 자동 선택하지 않습니다. 기본 보호 기간은 최근 7일입니다.

자동 유지 전략은 설정에서 바꿀 수 있습니다.

  • 경로 + 최신 기본값: Desktop/Downloads 안의 파일을 먼저 유지하고, 그 다음 Documents, 그 외 경로 순으로 유지합니다. 같은 우선순위 안에서는 더 최근에 수정된 파일을 유지합니다. 수정일도 같으면 copy, 복사본, (1) 같은 복사본 이름 패턴이 덜한 파일을 유지하고, 그래도 같으면 경로 이름순으로 고릅니다.
  • 최신 수정일: 가장 최근에 수정된 파일을 유지합니다. 수정일이 같으면 복사본 이름 패턴이 덜한 파일, 그 다음 경로 이름순으로 고릅니다.
  • 복사본 이름 우선: copy, 복사본, (1) 같은 복사본 이름 패턴이 덜한 파일을 먼저 유지합니다. 이름 기준이 같으면 더 오래된 수정일의 파일, 그 다음 경로 이름순으로 고릅니다.

주의할 점은 (1)이나 copy가 붙은 파일이 항상 자동 선택되는 것은 아니라는 점입니다. 예를 들어 file.jpgfile (1).jpg가 모두 Downloads에 있고 file (1).jpg가 더 최근에 수정되었다면, 기본 경로 + 최신 전략에서는 file (1).jpg가 유지 파일이 될 수 있습니다. 자동 선택은 안전한 제안일 뿐이며, 휴지통으로 이동하기 전에 사용자가 직접 선택을 바꿀 수 있습니다.

요구사항

  • macOS 13 이상
  • Apple Command Line Tools 또는 Xcode
  • 터미널에서 사용할 수 있는 Swift 컴파일러

Swift가 있는지 확인합니다.

swift --version

Swift가 없다면 Apple Command Line Tools를 설치합니다.

xcode-select --install

개발용 검증 명령은 아래와 같습니다.

./Scripts/build.sh
./Scripts/test.sh

샘플로 테스트

파일 선택창에서 바로 보이는 샘플 폴더를 만들려면 아래 명령을 사용합니다.

./Scripts/create-sample-data.sh "sample-data/DCleaner Sample"
open sample-data

앱에서 sample-data/DCleaner Sample 폴더를 추가한 뒤 스캔하면 됩니다.

삭제 동작을 테스트할 때는 휴지통으로 이동되므로, 휴지통을 비우기 전에는 복구할 수 있습니다. 빌드 결과와 샘플 데이터는 git에 포함하지 않습니다: .build/, dist/, .samples/, sample-data/, validation-sandbox/.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors