Mac OS X에서 디렉토리 크기를 올바르게보고하지 않습니까?


17

Finder에서 (응용 프로그램 폴더에있는) 일부 .app 파일을 복제하면 Finder는 중복 된 .app 파일이 원본과 크기가 같지 않음을 표시합니다. 이 파일 크기 불일치는 복제 한 모든 .app 파일에서 발생하지 않지만 .app 파일이 클수록 복제본이 원본과 동일한 크기를 표시하지 않을 가능성이 높습니다. 여기 몇 가지 예가 있어요.

GarageBand.app - 381.7 MB
GarageBand copy.app - 373.2 MB

iMovie.app - 695.3 MB
iMovie copy.app - 635.4 MB

Install Xcode.app - 1.81 GB
Install Xcode copy.app - 1.57 GB

이제는 Mac을 처음 사용하고이 파일 크기 불일치 문제를 발견 한 후 .app 파일이 실제로 파일이 아니라는 것을 발견했습니다. 파일은 실제로 디렉토리이지만 Finder는 파일을 파일 인 것처럼 표시합니다. 따라서 복제 프로세스가 원본 .app 디렉토리의 모든 내용을 복사하지는 않았으며 "파일 크기"의 차이를 설명했다고 생각했습니다. 그러나 파일 / 폴더 diff 도구 인 DeltaWalker를 다운로드하여 설치했으며 DeltaWalker는 중복 .app 디렉토리가 원래 .app 디렉토리와 정확히 동일하다고 말했습니다. 따라서 복제 프로세스가 완벽하게 작동했기 때문에 Finder보고 파일 크기에 문제가있는 것 같습니다.

또한 "du"명령을 사용하여 터미널에서 디렉토리의 크기를 확인했으며 원래 디렉토리와 중복 디렉토리 사이의 크기 불일치도 표시합니다.

du -k /Applications/GarageBand.app/
212868  /Applications/GarageBand.app/

du -k /Applications/GarageBand\ copy.app/
397880  /Applications/GarageBand copy.app/

du -k /Applications/iMovie.app/
629644  /Applications/iMovie.app/

du -k /Applications/iMovie\ copy.app/
700500  /Applications/iMovie copy.app/

du -k /Applications/Install\ Xcode.app/
1771864 /Applications/Install Xcode.app/

du -k /Applications/Install\ Xcode\ copy.app/
1772228 /Applications/Install Xcode copy.app/

또한 .app 디렉토리가 아닙니다. 내 / Developer / Library 디렉토리를 복제했으며 다음과 같이 말합니다.

du -k /Developer/Library/
320784  /Developer/Library/

du -k /Developer/Library\ copy/
399868  /Developer/Library copy/

그렇다면 누구나 Mac OS X이 디렉토리 크기를 올바르게보고하지 않는 이유를 설명 할 수 있습니까? 버그 (간단히 믿기 어려워)입니까, 아니면 새로운 Mac 사용자 인 것이 누락 되었습니까?

(Mac OS X Lion 10.7.2를 실행하고 있습니다)


elofturtle 님의 질문에 답변 :

가장 이상한 점은 Finder에 일관성이 없다는 것입니다. 방금 GarageBand.app를 2 회 복제 한 다음 복제본 중 하나를 2 회 복제했습니다. Finder는 모든 단일 사본을 다른 크기로 표시합니다.

GarageBand.app - 381.7 MB
GarageBand copy.app - 357.6 MB (duplicate of GarageBand.app)
GarageBand copy 2.app - 353.9 MB (duplicate of GarageBand.app)
GarageBand copy 3.app - 378.2 MB (duplicate of GarageBand copy 2.app)
GarageBand copy 4.app - 329.1 MB (duplicate of GarageBand copy 2.app)

또한 "GarageBand copy 3.app"는 "GarageBand copy 2.app"보다 크고 "GarageBand copy 4.app"는 "GarageBand copy 2.app"보다 작습니다. Finder의 버그 여야합니다.

다음은 "du -k"가 모든 것에 대해 말하는 것입니다.

212868  /Applications/GarageBand.app/
397880  /Applications/GarageBand copy.app/
397880  /Applications/GarageBand copy 2.app/
397880  /Applications/GarageBand copy 3.app/
397880  /Applications/GarageBand copy 4.app/

적어도 모든 복제본의 크기는 동일하지만 원본과 동일한 크기는 아닙니다.


나는 이것이 하드 링크와 심볼릭 링크로 내려 갈 것이고, 그 .app 번들을 복제 할 때 하나 또는 다른 파일이 별도의 파일 사본으로 변환 될 것입니다. 그건 그렇고, 동일한 볼륨 (파티션?) 내에서 복제합니까?
Spiff

아래 답변에 빠진 것이 있습니까? 귀하의 질문에 대한 완전한 답변이라고 생각하지만 지금까지 귀하의 의견이 없습니다. 알려주세요.
Tonin

1
지연되어 죄송합니다. 귀하의 답변은 질문에 대한 관심을 잃은 후에 나왔습니다. 그러나 귀하의 답변은 훌륭합니다-매우 상세하며 실제로 내 질문에 완전히 대답합니다. 대단히 감사합니다. 파일 / 폴더가 실제로 압축되어 있어도 Finder는 압축되지 않은 크기를 표시합니다.
pacoverflow

이 태그를 다시 태그하면 [copy] 태그를 지정해야합니까? – 그러나 어떤 다른 태그를 희생해서?
Arne Stenström

답변:


13

차이점은 계산 방법, 도구, 압축 및 버그와 같은 다른 이유에서 비롯되었습니다.

크기 의 첫 번째 차이 는 Finder버그 인 것 같습니다 . Finder가 표시하는 파일 크기는 어떻게 든 실시간으로 계산되어 .DS_Store파일로 캐시됩니다 . 어떤 이유로 큰 응용 프로그램 / 폴더를 복제하는 동안 Finder는 복사 과정에서 크기를 계산하고 불완전한 크기를 캐시합니다. 그런 다음 Finder 윈도우에서 크기가 회색으로 표시됩니다. 회색 은 Finder가 마지막 크기 계산 이후 내용이 변경되었지만 아직 다시 계산하지 않았다는 것을 의미 합니다 .

크기를 올바르게 다시 계산하는 유일한 방법 .DS_Store은 응용 프로그램 폴더에서 파일 을 삭제 한 다음 활동 모니터에서 Finder를 종료하고 Dock 아이콘에서 다시 시작하는 것입니다. .DS_Store파일을 삭제하지 않으면 여전히 회색으로 유지됩니다. 어쩌면 시간 (일, 일, 재부팅 등)을 기다리면 Finder가 자체적으로 수행합니다.

그 후에 Finder에서보고 한 모든 크기가 동일하다는 것을 알 수 있습니다.

예, 적어도 OSX Lion에서는 Finder 버그처럼 보입니다 (여기서는 10.7.4, Finder 버전 10.7.3으로 테스트). 동일한 종류의 동작을보고하는 이 스레드 를 볼 수도 있습니다.

그런 다음 du도구를 고려해 봅시다 . 처음에, 우리가 보는 차이점은 복사되는 항목의 논리적 크기와 물리적 크기의 차이로 설명 할 수 있다고 생각했습니다. 논리적 크기는 항목 의 실제 크기입니다. 즉, 포함 된 모든 단일 정보 비트가 합산됩니다. 물리적 크기는 디스크의 항목 크기이며 각 정보 비트는 디스크 섹터에 기록됩니다.

예를 들어, 단일 문자를 포함하는 파일은 1 바이트 논리 크기를 가지지 만 실제로 디스크에 쓸 때 실제 크기는 512 바이트 또는 4096 바이트입니다. 실제 크기는 일반적으로 논리 크기보다 큽니다 (디스크 또는 파일 시스템의 실제 섹터 / 블록 크기에 따라 다름). 이것은 이 다른 스레드에서 더 자세히 설명됩니다 . 스파 스 파일 의 경우 논리 크기가 더 클 수 있지만 HFS +는 이러한 기능을 지원하지 않는 것 같습니다.

du실제 크기 만 표시하며 BLOCKSIZE가 무엇인지 알 수 있습니다. 보고 된 크기 du가 항상 원본보다 더 크거나 예외적으로 동일 함을 알 수 있습니다. 파일 시스템 및 디스크 공간 조각화 때문입니다. 파일을 복사 할 때 (실제로 응용 프로그램이 디렉토리이므로 많은 파일이 디스크에) 새 섹터가 디스크에 할당 되고 조각화가 발생할 때 사용되는 블록 수가 일반적으로 원래 항목보다 높습니다. 어떤 사람들은 그 파일을 슬랙 이라고 부릅니다 .

이제 Finder로 돌아갑니다. 복제 한 응용 프로그램의 정보 입수 창 을 열면 Finder가 선택한 항목의 논리적 크기와 물리적 크기를 실제로보고하고 있음을 알 수 있습니다. 그렇다면 말이됩니다. Finder가보고 한 실제 크기와 du약간의 수학을 수행 한 경우 보고 된 실제 크기를 비교할 수도 있습니다 .

왜 수학을합니까? Finder는 파일 크기를 kB, MB 또는 GB 단위로 표시 du하므로 kiB, MiB 또는 GiB 단위로 파일을 보고합니다. 이들은 디지털 정보 단위를 계산하고 표시하는 데 사용해야 하는 IEC 이진 접두사 입니다.

그러나 실제로 File Slack이 여기에 포함되어 있는지 확실하지 않습니다. 다른 것이 있습니다. HFS + 볼륨은 압축을 투명하게 수행하며 Apple은 OS에서 설치 한 원래 항목에 대해 압축을 사용합니다. 그런 다음 표준 도구를 사용하여 파일을 복사하면 더 이상 압축이 사용되지 않습니다 (기본적으로 이전 버전과의 호환성을 위해). 해당 파일을 압축 상태로 유지하려면 Finder 작업 ditto대신 cp또는 명령 을 사용해야합니다 . 이것은 이 검토에서 설명됩니다 .

다른 기술을 사용하여 iTunes.app를 복사 한 결과는 다음과 같습니다. ditto는 압축을 유지하면서 응용 프로그램을 정확히 동일한 크기로 만드는 것을 알 수 cp있습니다. 그리고 필요없는 아치의 바이너리를 제거한 다음 전체 크기를 줄일 수도 있습니다).

antoine@amarante:/Applications$ du -ms iTunes.app/
281 iTunes.app/
antoine@amarante:/Applications$ cp -a iTunes.app/ iTunes-copy.app/
antoine@amarante:/Applications$ ditto iTunes.app/ iTunes-ditto.app
antoine@amarante:/Applications$ ditto --arch x86_64 iTunes.app/ iTunes-64.app
antoine@amarante:/Applications$ du -ms iTunes*
236 iTunes-64.app
289 iTunes-copy.app
281 iTunes-ditto.app
281 iTunes.app

내 보완적인 게시물에 대한 그의 답변 대한 @DanPritts에게 감사합니다 .


다른 방법이 아닙니까? Finder는 실제 SI 접두사를 보여줍니다.
다니엘 벡

겠습니까 스파 스 파일이 아닌 ( 하지 스파 스 번들 / OS X의 이미지) 실제 파일 크기보다 논리적 더 있나요?
다니엘 벡

네, 맞습니다. Finder는 SI 접두사와 duIEC를 보여줍니다 . 게시물을 수정하겠습니다.
Tonin

@DanielBeck Sparse 파일은 이론적으로는 가능하지만 OSX 응용 프로그램은 스파 스 파일로 사용할 수있는 파일은 무엇입니까? Wikipedia에 따르면 스파 스 파일은 HFS +에서 지원되지 않습니다.
Tonin

이 단락은 일반적으로 적용 가능한 것처럼 읽습니다 ( 디스크 또는 파일 시스템의 실제 섹터 / 블록 크기에 따라 다름 ). 그래서 나는 그것을 언급하고 싶었습니다.
Daniel Beck

1

OS X의 끔찍한 결함 / 버그입니다. 가장 쉬운 방법은 큰 응용 프로그램 번들을 복제 한 다음 내용을 표시하고 내부에서 큰 파일을 삭제하는 것입니다. 공간이 복구되지 않습니다. 파일이 여전히 큽니다. 예를 들어 3.5GB 응용 프로그램 번들이있는 경우 내용을 표시 한 다음 3GB를 제거하면 파일 크기가 500MB 인 응용 프로그램이 만들어집니다. 당신은하지 않습니다. 여전히 3.5GB입니다.


크기를 다시 계산하려면 폴더보기 옵션에서 모든 크기 계산을 선택하십시오. apple.stackexchange.com/a/227173/156178 참조
asmaier

0

이것은 기본적으로 추측이지만 두 가지 가능성이 있습니다.

  1. 일부 데이터가 삭제되었지만 원본에서 할당이 해제되지 않았으며이 데이터는 복사되지 않습니다. 그러나 일부 디스크 사용량 검색에는 나타나지만 다른 것 (du 또는 OS X에 내부적으로 사용되는 다른 매개 변수)에는 나타나지 않습니다.
  2. 일부 데이터는 원래 위치에 연결되며 이는 다른 도구에서 감지 된 크기에 영향을줍니다.

(1) 다른 결과가 나올 경우 세 번째 사본을 만들고 사본을 비교해야합니다.


죄송합니다. 댓글에서 여러 줄로 된 코드 블록을 제대로 볼 수 없으므로 원본 게시물을 수정 해 보겠습니다.
pacoverflow

복제본이 원본보다 클 것으로는 기대하지 않았을 것입니다 :-/ 버그 보고서의 가치가있는 것 같지만 Finder의 내부 작업에 대한 피드백을 얻을 가능성이 적습니다. 그래도 그들은 그것을 살펴볼 것입니다.
elofturtle

0

먼저, Mac .app 파일은 실제로 Windows .exe 파일과 같은 컴파일 된 바이너리가 아니라 디렉토리 라는 것을 알아야 합니다. Finder는 * .app라는 폴더에 대해이 사실을 숨 깁니다.

예 (터미널에서)

# cd /Applications/Calculator.app
# ls
Contents/

나는 현재 Finder / Get Info가 .app 폴더의 크기를 계산하기 위해 전혀 지능적이지 않은 휴리스틱을 사용하고 있다는 것을 확신합니다. 즉, 모든 단일 하위 폴더와 파일을 열거하고 모든 크기를 함께 추가 할 필요는 없습니다.

필자는 OSX가 최근에 복사 할 때 파일의 모든 파일을 검사해야했기 때문에 사본의 추정치가 정확하다고 생각하지만, 원래의 경우 OSX는이를 수행하지 않아도 될 수 있습니다 (예 : 공장 설치).


-1

SSD에 Yosemite를 설치 한 후 내부 HDD로 이동 한 후에 홈 디렉토리에이 문제가있었습니다. '정보 입수'를 사용할 때 Finder의 상태 표시 줄에 올바른 크기 인 240GB를 표시했지만 8GB의 잘못된 크기 만보고했습니다. 사용자 폴더에서 정보 입수를 클릭하여 수정 한 다음 올바르게 계산하고 홈 디렉토리에서보고하는 잘못된 크기를 수정했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.