요약
- APFS에서 Finder의 복제나 같은 볼륨 안의 복사는 데이터를 복사하지 않고 원본의 데이터 블록을 공유하는 클론을 만듭니다.
- 다른 사본이 남아 있는 한 클론을 삭제해도 공간은 거의 생기지 않습니다. 공유된 블록이 여전히 사용 중이기 때문입니다.
- 중복 파일 찾기 앱은 블록이 아니라 내용을 비교하므로, 디스크에서는 결코 생기지 않을 수 GB의 절약 공간을 보고할 수 있습니다.
- shasum -a 256 같은 체크섬으로 진짜 중복인지 확인하고, 앱과 보관함이 실제로 참조하는 사본을 남기세요.
- 사진 보관함이나 앱 번들 안의 중복 파일은 절대 직접 지우지 마세요. 대신 사진 앱의 중복 항목 앨범을 사용하세요.
Mac에서 진짜 중복 파일을 안전하게 찾아 제거하는 방법
- 큰 후보부터 찾기. Finder에서 파일 › 새로운 스마트 폴더를 선택하고 ‘파일 크기가 500MB보다 큼’ 조건을 추가한 다음, 이름이나 크기로 정렬해 짝이 될 만한 파일을 찾습니다.
- 내용이 같은지 확인하기. 터미널에서 두 파일에 대해 shasum -a 256을 실행합니다. 체크섬이 같으면 내용이 같고, 다르면 중복이 아닙니다.
- 같은 볼륨에 있는지 확인하기. 같은 APFS 볼륨에서 만든 사본은 클론일 수 있습니다. 하나를 지워도 공간이 거의 또는 전혀 생기지 않을 수 있으므로, 전후의 여유 공간을 확인하세요.
- 참조되는 사본 남기기. 앱이 사용하는 프로젝트, 보관함, 폴더 안에 있는 것을 남기세요. 나머지는 휴지통으로 옮기되, 사진 보관함 같은 패키지 안의 파일은 절대 옮기지 마세요.
- 결과를 확인한 뒤 휴지통 비우기. 디스크 유틸리티에서 여유 공간을 적어 두고, 휴지통을 비운 다음 비교합니다. 변화가 없다면 클론이었으므로 지워도 얻은 것이 없습니다.
현재 모든 Mac의 시동 디스크 형식인 APFS에서는 ‘중복’ 파일이 사실 중복이 아닌 경우가 많습니다. Finder에서 파일 › 복제(Command-D)를 선택하거나 같은 볼륨의 다른 폴더로 파일을 복사하면, macOS는 대개 클론을 만듭니다. 첫 번째 파일과 같은 데이터 블록을 가리키는 두 번째 파일입니다. 추가 공간을 거의 쓰지 않으므로, 지워도 돌아오는 공간이 거의 없습니다.
APFS 클론의 작동 방식
클론은 내용을 복사하지 않은 새 파일입니다. 두 파일이 디스크의 같은 블록을 가리킵니다. 둘 중 하나가 바뀔 때만 APFS가 바뀐 부분에 대해 새 블록을 기록하는데, 이를 기록 시 복사(copy-on-write)라고 합니다. 바뀌지 않은 부분은 계속 공유됩니다.
macOS는 다음 경우에 클론을 만듭니다.
- Finder에서 같은 APFS 볼륨 안에서 복제하거나 복사(Option-드래그)할 때.
- 앱이 시스템의 표준 파일 복사 기능으로 파일을 복사할 때(많은 앱이 그렇게 합니다).
- 터미널에서
cp -c를 사용할 때. 일반cp는 전체 복사본을 기록합니다.
cp -c "Big Video.mov" "Big Video copy.mov" # 클론: 데이터를 공유, 새 공간을 거의 쓰지 않음
cp "Big Video.mov" "Big Video copy.mov" # 전체 복사: 모든 데이터를 다시 기록
다른 볼륨, 외장 드라이브, 네트워크 공유로 복사하면 항상 전체 복사본이 됩니다. Howard Oakley가 설명하듯, 클론을 Time Machine 백업에서 복원하면 공유가 사라지고 각각 별개의 파일로 돌아옵니다.
클론을 지워도 공간이 거의 생기지 않는 이유
어떤 블록을 쓰는 마지막 파일이 삭제되고, 그 블록을 붙잡고 있는 로컬 스냅샷도 없어야 공간이 돌아옵니다. 클론 한 쌍에서 하나를 지우면 공유된 블록은 모두 다른 하나가 계속 사용하므로, 회수되는 것은 파일 시스템 메타데이터 몇 KB뿐입니다. 저희가 시험해 보니, 200MB 파일을 클론했을 때 여유 공간은 약 4KB 줄었고, 일반 복사를 했을 때는 200MB 줄었습니다.
일부만 편집한 클론은 그 중간입니다. 10GB 비디오를 클론한 뒤 한쪽을 잘라 냈다면, 달라진 블록은 그 파일에만 속합니다. 그 파일을 지우면 해당 블록만 비워지고 나머지는 그대로입니다.
중복 파일 찾기 앱이 절약량을 부풀릴 수 있는 이유
중복 파일 찾기 앱은 보통 체크섬으로 파일의 내용을 비교합니다. 클론은 원본과 내용이 완전히 같으므로 중복으로 보고되고, 그 전체 크기가 ‘절약할 수 있는 공간’ 합계에 더해집니다. 클론이 많은 Mac에서는 이 합계가 수 GB나 부풀려질 수 있습니다.
같은 맹점 때문에 도구마다 수치가 다르기도 합니다. Finder의 정보 가져오기와 du는 파일 크기를 각각 따로 더하므로, 1GB 파일의 클론이 세 개 있는 폴더는 3GB로 보입니다. 실제로 바뀌는 것은 디스크 유틸리티에 표시되는 볼륨의 여유 공간입니다.
진짜 사본이 많다면, 지우기보다 클론으로 변환하는 편이 나을 때가 많습니다. 모든 경로가 그대로 작동하기 때문입니다. John Siracusa의 Hyperspace 같은 도구가 이 일을 합니다.
논리적 크기와 할당된 크기
모든 파일에는 크기가 두 가지 있습니다.
- 논리적 크기: 파일에 담긴 바이트 수.
ls -l과 Finder의 ‘크기’가 이 값을 보여 줍니다. - 할당된 크기: 디스크에서 실제로 차지하는 공간. Finder의 ‘디스크 상’ 수치와
du가 이 값을 보여 줍니다.
두 값은 클론(공유 블록), 디스크 이미지나 가상 머신 같은 스파스 파일(기록되지 않은 영역은 공간을 쓰지 않음), APFS가 압축한 파일, 다운로드를 제거한 클라우드 파일에서 서로 다릅니다. 자세한 내용은 논리적 크기와 물리적 크기를 참고하세요.
ls -lh "Big Video.mov" # 논리적 크기
du -h "Big Video.mov" # 할당된 크기(공유가 없는 것처럼 계산)
진짜 중복 파일을 안전하게 찾는 방법
큰 파일부터 시작하세요. 작은 중복 파일은 대부분 문제가 되지 않습니다. Finder에서 파일 › 새로운 스마트 폴더를 선택하고 +를 클릭한 다음 파일 크기 › 보다 큼 › 500 MB로 설정합니다(첫 번째 메뉴에 파일 크기가 없으면 기타…를 선택하세요). 그런 다음 목록 보기로 바꿔 이름순으로 정렬합니다. 이름과 크기가 같은 파일이 후보입니다.
체크섬으로 확인하세요. shasum은 macOS에 기본으로 들어 있으며 파일을 읽기만 합니다.
shasum -a 256 ~/Movies/"Trip.mov" ~/Desktop/"Trip copy.mov"
긴 16진수 문자열이 같으면 내용이 같습니다. 큰 파일이 들어 있는 폴더 전체에서 일치하는 것을 찾으려면 다음을 실행합니다.
find ~/Movies -type f -size +100M -print0 | xargs -0 shasum -a 256 \
| awk '{n[$1]++; l[$1]=l[$1] $0 "\n"} END {for (h in n) if (n[h]>1) print l[h]}'
체크섬이 같은 파일들을 묶어서 출력하며, 아무것도 삭제하지 않습니다. 체크섬이 같다고 해서 클론인지 아닌지까지 알 수는 없으므로, 그 공간은 ‘회수될 수도 있는’ 공간으로 보세요.
원한다면 신뢰할 수 있는 도구를 쓰세요. 오픈 소스 dupeGuru나 잘 알려진 상용 앱도 괜찮습니다. 단, 각 그룹을 검토하고, 보관함과 시스템 폴더는 제외하고, 절약 수치는 상한선으로만 보세요.
‘잘못된’ 사본을 지울 위험
내용이 같다고 해서 두 사본을 서로 바꿔 써도 되는 것은 아닙니다.
- 사진 보관함. Finder에서
.photoslibrary패키지 안의 파일을 절대 지우지 마세요. 보관함의 데이터베이스가 여전히 그 파일을 기대하므로 손상될 수 있습니다. macOS Ventura부터 사진 앱의 유틸리티 아래에 중복 항목 앨범이 있어 중복을 올바르게 병합합니다. 삭제한 항목은 최근 삭제된 항목에서 대기합니다. - 음악, Final Cut Pro, Lightroom 같은 보관함은 경로로 파일을 참조합니다. 보관함이 가리키는 ‘중복’ 파일을 지우면 파일 누락이 생깁니다.
- 앱 번들. 많은 앱이 똑같은 프레임워크를 포함하고 있습니다.
.app안의 무언가를 지우면 코드 서명이 깨져 앱이 열리지 않을 수 있습니다. 대신 앱 전체를 제거하세요. Mac 앱을 완전히 제거하는 방법을 참고하세요. - 프로젝트와 코드. 프로젝트 폴더 안의 파일은 빌드와 스크립트가 참조합니다. 대개 지워야 할 것은 데스크탑에 있는 사본입니다.
- 백업. 다른 드라이브에 일부러 만든 두 번째 사본은 중복이 아니라 백업입니다.
확신이 없으면 앱이 기대하는 위치에 있는 사본을 남기고, 다른 하나는 되돌릴 수 있도록 휴지통으로 옮기세요.
MoreRoom이 도와주는 방법
MoreRoom의 삭제 없이 공간 확보는 1 MB 이상인 동일한 파일을 무료로 찾아 줍니다. Pro에서는 Finder의 복제처럼 추가 사본을 APFS 클론으로 바꿉니다. 각 사본은 이름, 날짜, 태그를 유지한 채 제자리에 그대로 있지만 데이터는 한 번만 저장되며, 아무것도 삭제되지 않습니다. 작업 직전에 모든 파일을 다시 확인하며, 나중에 사본 하나를 편집하면 그 사본은 다시 별도의 공간을 갖게 될 뿐입니다. MoreRoom은 디스크를 정직하게 측정하기도 합니다. 스캔할 때 클론된 데이터를 한 번만 계산하므로, 파일별 크기와 달리 합계와 트리맵이 클론 때문에 부풀려지지 않습니다. 또한 규칙이 다운로드 폴더에 남은 오래된 디스크 이미지처럼 검토해 볼 만한 흔한 사본을 표시해 줍니다. 제거하는 모든 항목은 먼저 휴지통으로 이동하며 실행 취소할 수 있습니다. 사진의 중복 항목은 사진 앱의 중복 항목 앨범을 사용하세요.
자주 묻는 질문
Finder에서 파일을 복제하면 차지하는 공간이 두 배가 되나요?
APFS에서는 아닙니다. Finder의 복제(Command-D)와 같은 APFS 볼륨 안의 복사는 같은 데이터를 공유하는 클론을 만들므로, 둘 중 하나를 편집하기 전까지 사본은 추가 공간을 거의 쓰지 않습니다.
파일이 클론인지 어떻게 알 수 있나요?
Finder에는 표시되지 않고, 두 사본 모두 전체 크기로 표시됩니다. 실용적인 방법은 여유 공간을 적어 두고, 사본 하나를 지우고 휴지통을 비운 다음 여유 공간이 늘었는지 보는 것입니다.
중복 파일을 지웠는데 왜 공간이 생기지 않았나요?
아마 같은 데이터를 공유하는 클론이나 하드 링크였을 것입니다. 해당 블록을 쓰는 마지막 파일이 삭제되어야 공간이 돌아옵니다.
중복 파일 찾기 앱을 써도 안전한가요?
신뢰할 수 있는 앱이라면 모든 결과를 검토하는 한 안전합니다. 사진과 음악 보관함, 앱 번들, 시스템 폴더는 제외하고, 절약 추정치가 클론을 중복 계산할 수 있다는 점을 기억하세요.
MoreRoom은 중복 파일을 찾아 주나요?
네, 버전 0.2.1부터 찾아 줍니다. 삭제 없이 공간 확보 기능이 1 MB 이상인 동일한 파일을 무료로 찾아 주며, Pro에서는 추가 사본을 APFS 클론으로 바꿔 각 파일은 제자리에 그대로 두고 데이터는 한 번만 저장합니다. 아무것도 삭제되지 않습니다.