Mac OS X không báo cáo kích thước thư mục chính xác?


17

Trong Finder, tôi nhận thấy rằng nếu tôi sao chép một số tệp .app (trong thư mục Ứng dụng), Finder sẽ hiển thị rằng tệp .app trùng lặp không cùng kích thước với bản gốc. Sự khác biệt về kích thước tệp này không xảy ra đối với tất cả các tệp .app mà tôi trùng lặp, nhưng có vẻ như tệp .app càng lớn thì càng có nhiều khả năng trùng lặp sẽ không hiển thị cùng kích thước với bản gốc. Dưới đây là một số ví dụ:

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

Bây giờ tôi mới sử dụng máy Mac và sau khi tôi nhận thấy vấn đề chênh lệch kích thước tệp này, tôi phát hiện ra rằng các tệp .app thực sự không phải là tệp - chúng thực sự là các thư mục, nhưng Finder hiển thị chúng như thể chúng là các tệp. Vì vậy, tôi nghĩ có lẽ quá trình sao chép không sao chép tất cả nội dung của thư mục .app ban đầu và điều đó giải thích sự khác biệt về "kích thước tệp". Nhưng sau đó tôi đã tải xuống và cài đặt DeltaWalker, một công cụ tìm khác biệt tệp / thư mục và DeltaWalker nói rằng các thư mục .app trùng lặp giống hệt như các thư mục .app ban đầu. Vì vậy, quá trình sao chép đã hoạt động hoàn hảo và do đó dường như là một vấn đề với kích thước tệp báo cáo Finder.

Tôi cũng đã kiểm tra kích thước của các thư mục trong Terminal, sử dụng lệnh "du" và điều đó cũng cho thấy sự khác biệt về kích thước giữa các thư mục gốc và thư mục trùng lặp:

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/

Ngoài ra, nó không chỉ là thư mục .app. Tôi đã sao chép thư mục / Nhà phát triển / Thư viện của mình và đây là những gì du nói:

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

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

Vì vậy, bất cứ ai có thể giải thích tại sao Mac OS X dường như không báo cáo kích thước thư mục chính xác? Đây có phải là một lỗi (khó tin cho một cái gì đó quá đơn giản) hoặc tôi đang thiếu một cái gì đó (là một người dùng Mac mới)?

(Tôi đang chạy Mac OS X Lion 10.7.2)


CẬP NHẬT để đáp ứng với elofturtle:

Điều kỳ lạ nhất ở đây là Finder không có tính nhất quán. Tôi chỉ tạo 2 bản sao của GarageBand.app và sau đó tạo 2 bản sao của một trong các bản sao. Trình tìm kiếm hiển thị mỗi bản sao duy nhất với kích thước khác nhau:

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)

Cũng lưu ý rằng "GarageBand copy 3.app" lớn hơn "GarageBand copy 2.app", trong khi "GarageBand copy 4.app" nhỏ hơn "GarageBand copy 2.app". Đó phải là một lỗi trong Finder.

Đây là những gì "du -k" nói về tất cả chúng:

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/

Ít nhất nó nói rằng tất cả các bản sao có cùng kích thước, nhưng chúng không cùng kích thước với bản gốc.


Tôi có linh cảm điều này sẽ đi xuống các liên kết cứng và liên kết tượng trưng, ​​và một hoặc những người khác được chuyển đổi thành các bản sao tệp riêng biệt khi bạn sao chép các gói .app đó. Nhân tiện, bạn đang nhân đôi chúng trong cùng một ổ đĩa (phân vùng?).
Spiff

Có điều gì còn thiếu cho câu trả lời của tôi dưới đây? Tôi có ấn tượng rằng đó là một câu trả lời đầy đủ cho câu hỏi của bạn, nhưng cho đến nay không có bình luận nào từ bạn. Bạn có thể vui lòng cho tôi biết?
Tonin

1
Tôi xin lỗi vì sự chậm trễ. Câu trả lời của bạn đến sau khi tôi đã mất hứng thú với câu hỏi. Nhưng câu trả lời của bạn là tuyệt vời - rất chi tiết và nó thực sự trả lời đầy đủ câu hỏi của tôi. Cảm ơn bạn rất nhiều và tôi sẽ phải nhớ rằng Finder hiển thị kích thước không nén ngay cả khi tệp / thư mục thực sự được nén.
pacoverflow

Gắn thẻ lại cái này, có lẽ tôi nên gắn thẻ nó [bản sao]? - Nhưng với chi phí của thẻ nào khác?
Arne Stenström

Câu trả lời:


13

Sự khác biệt đến từ những lý do khác nhau: cách đếm khác nhau, công cụ khác nhau, nén và những gì trông giống như một lỗi.

Sự khác biệt đầu tiên về kích thước bạn thấy dường như là một lỗi trong Finder . Kích thước tệp được hiển thị bởi Finder bằng cách nào đó được tính theo thời gian thực và được lưu trong bộ nhớ cache .DS_Store. Vì một số lý do, trong khi sao chép một ứng dụng / thư mục lớn, Finder sẽ tính toán kích thước của nó trong quá trình sao chép và lưu trữ kích thước, sau đó không đầy đủ. Sau đó, nó cho thấy kích thước như màu xám trong các cửa sổ Finder, màu xám có nghĩa là Finder biết nội dung đã thay đổi kể từ khi tính toán kích thước cuối cùng nhưng nó vẫn chưa tính toán lại .

Cách duy nhất tôi tìm thấy để làm cho nó tính toán lại kích thước chính xác là xóa .DS_Storetệp trong thư mục Ứng dụng, sau đó thoát Finder (ví dụ từ Trình giám sát hoạt động) và khởi chạy lại (từ Biểu tượng Dock). Nếu bạn không xóa .DS_Storetập tin, nó vẫn bị mờ đi. Có lẽ phải đợi một thời gian (giờ, ngày, khởi động lại, ...) sẽ khiến Finder tự làm điều đó.

Sau đó, bạn sẽ thấy rằng tất cả các kích thước được báo cáo bởi Finder đều giống nhau.

Vì vậy, có, nó trông giống như một lỗi Finder, ít nhất là trong OSX Lion (đã được thử nghiệm với 10.7.4 tại đây, Finder phiên bản 10.7.3). Bạn cũng có thể thấy chủ đề này báo cáo loại hành vi tương tự.

Sau đó, hãy xem xét các ducông cụ. Lúc đầu, tôi nghĩ sự khác biệt mà chúng ta thấy có thể được giải thích bằng sự khác biệt giữa kích thước logic và kích thước vật lý của các mục được sao chép. Kích thước logic là kích thước thực của vật phẩm, nghĩa là từng bit thông tin chứa trong đó cộng lại. Kích thước vật lý là kích thước của mục trên đĩa, trong đó mỗi bit thông tin được ghi trên một khu vực đĩa.

Ví dụ, một tệp chứa một ký tự sẽ có kích thước logic 1 byte, nhưng kích thước vật lý 512 byte hoặc thậm chí 4096 byte khi thực sự được ghi vào đĩa. Kích thước vật lý thường lớn hơn kích thước logic (và phụ thuộc vào kích thước khối / khối thực tế của đĩa hoặc hệ thống tệp). Điều này được giải thích thành chi tiết hơn trong chủ đề khác này . Kích thước logic có thể lớn hơn trong trường hợp tệp thưa , nhưng HFS + dường như không hỗ trợ tính năng như vậy.

duchỉ hiển thị kích thước vật lý (và bạn có thể cho nó biết BLOCKSIZE là gì). Bạn có thể thấy rằng kích thước được báo cáo duluôn lớn hơn (hoặc, đặc biệt, giống nhau) như ban đầu. Điều này là do hệ thống tập tin và phân mảnh không gian đĩa. Khi bạn sao chép qua một tệp (thực tế ở đây là một loạt các tệp, vì Ứng dụng là một thư mục) các phân vùng mới sẽ được phân bổ trên đĩa và khi xảy ra sự phân mảnh , số lượng khối được sử dụng thường cao hơn so với mục gốc. Một số người gọi đó là File Slack .

Bây giờ, trở lại Finder. Nếu bạn mở cửa sổ lấy thông tin của Ứng dụng bạn đã nhân đôi, bạn sẽ thấy Trình tìm kiếm thực sự báo cáo cả Kích thước logic và Kích thước vật lý của mục bạn đã chọn. Mà sau đó có ý nghĩa. Thậm chí bạn sẽ có thể so sánh kích thước Vật lý được báo cáo bởi Finder và kích thước được báo cáo dunếu bạn làm một chút toán học.

Tại sao làm một số toán học? Bởi vì Finder tìm thấy kích thước tệp theo kB, MB hoặc GB nơi dubáo cáo chúng theo kiB, MiB hoặc GiB. Đó là các tiền tố nhị phân IEC nên được sử dụng để tính toán và hiển thị các đơn vị thông tin kỹ thuật số.

Nhưng, thực ra, tôi không chắc File Slack có liên quan ở đây, có một thứ khác. Khối lượng HFS + cho phép nén , được thực hiện trong suốt và Apple sử dụng điều đó cho các mục gốc được HĐH cài đặt. Sau đó, khi các tệp được sao chép bằng các công cụ tiêu chuẩn, nén không được sử dụng nữa (như một mặc định, để tương thích ngược). Nếu bạn muốn tiếp tục nén trên các tệp đó, bạn cần sử dụng dittolệnh thay vì cphoặc bất kỳ hành động Finder nào. Điều này được giải thích trong đánh giá này .

Đây là đầu ra của việc sao chép iTunes.app bằng các kỹ thuật khác nhau. Bạn sẽ thấy rằng ditto làm cho Ứng dụng có cùng kích thước, duy trì nén, trong khi cpkhông. Và thậm chí bạn có thể xóa nhị phân cho vòm bạn không cần, sau đó giảm toàn bộ kích thước):

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

Cảm ơn @DanPritts đã trả lời cho bài viết bổ sung của tôi .


Không phải nó là cách khác sao? Trình tìm kiếm hiển thị tiền tố SI thực tế.
Daniel Beck

Các tệp thưa thớt ( không phải là các gói / hình ảnh thưa thớt của OS X) có logic lớn hơn kích thước tệp vật lý?
Daniel Beck

Vâng, bạn đã đúng, Finder hiển thị tiền tố SI và duIEC, tôi sẽ sửa bài đăng của mình.
Tonin

@DanielBeck Các tệp thưa thớt, theo lý thuyết có thể là có, nhưng loại ứng dụng OSX nào sẽ có các tệp thưa? Theo wikipedia , các tệp thưa thớt không được hỗ trợ trên HFS +.
Tonin

Đoạn đó đọc giống như nó thường được áp dụng ( phụ thuộc vào kích thước khối / khối thực tế của đĩa hoặc hệ thống tệp ), vì vậy đó là lý do tại sao tôi muốn đề cập đến điều đó.
Daniel Beck

1

Đó là một lỗ hổng / lỗi khủng khiếp trong OS X. Cách dễ nhất để thấy nó là sao chép một gói ứng dụng lớn, sau đó hiển thị nội dung và xóa một tệp lớn từ bên trong. Không gian sẽ không phục hồi. Các tập tin vẫn còn rất lớn. Ví dụ: nếu bạn có gói ứng dụng 3,5 GB, bạn hiển thị nội dung, sau đó xóa 3 GB khỏi nó, bây giờ bạn sẽ có một ứng dụng có kích thước tệp là 500MB. Bạn sẽ không. Nó vẫn sẽ là 3,5 GB.


Để tính toán lại các kích thước, chọn Tính tất cả các kích cỡ trong các tùy chọn xem thư mục. Xem apple.stackexchange.com/a/227173/156178
asmaier

0

Điều này về cơ bản là một phỏng đoán, nhưng tôi thấy hai khả năng:

  1. Một số dữ liệu đã bị xóa nhưng không được xử lý trong bản gốc và điều này không được sao chép. Tuy nhiên, nó xuất hiện trong một số tìm kiếm sử dụng đĩa, nhưng không phải là các tìm kiếm khác (các tham số khác nhau được cung cấp cho du hoặc bất kỳ OS X nào sử dụng nội bộ).
  2. Một số dữ liệu được liên kết với vị trí ban đầu và điều này ảnh hưởng đến kích thước cảm nhận trong các công cụ khác nhau.

Nếu (1) bạn có thể sẽ nhận được các kết quả khác nhau khi tạo bản sao thứ ba và so sánh các bản sao.


Xin lỗi, không thể có các khối mã đa dòng để nhìn đúng trong một nhận xét, vì vậy tôi sẽ thử chỉnh sửa bài viết gốc của mình.
dòng chảy vào

Tôi không mong đợi các bản sao sẽ lớn hơn bản gốc: - / Nó có vẻ xứng đáng với một báo cáo lỗi, nhưng tôi muốn có cơ hội nhận được bất kỳ phản hồi nào về hoạt động bên trong của Finder vì điều này rất mong manh. Hy vọng rằng họ sẽ xem xét nó, mặc dù.
elofturtle

0

Trước tiên, bạn cần lưu ý rằng các tệp Mac .app trên thực tế là các Thư mục chứ không phải các tệp nhị phân được biên dịch như các tệp .exe của Windows. Finder chỉ che giấu sự thật này từ bạn cho các thư mục có tên * .app.

ví dụ: (từ Terminal)

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

Tôi khá chắc chắn những gì đang xảy ra là Finder / Get Info đang sử dụng một số heuristic không thông minh để tính kích thước của thư mục .app. Điều này có nghĩa là nó không cần liệt kê từng thư mục con và tệp và cộng tất cả các kích thước đó lại với nhau.

Tôi đoán là ước tính trên bản sao là chính xác vì OSX gần đây đã phải kiểm tra mọi tệp trong đó khi bạn sao chép, trong khi trên bản gốc, OSX có thể không bao giờ phải làm như vậy (ví dụ như với cài đặt gốc)


-1

Tôi gặp vấn đề này với Thư mục nhà của tôi khi tôi chuyển nó vào ổ cứng nội bộ sau khi cài đặt Yosemite trên SSD. Khi sử dụng 'Nhận thông tin', nó báo cáo kích thước không chính xác chỉ 8GB, mặc dù nó hiển thị kích thước chính xác 240GB trong thanh trạng thái của Finder. Tôi đã sửa nó bằng cách nhấp vào Nhận thông tin trên thư mục Người dùng, sau đó tính toán chính xác và sửa kích thước không chính xác được báo cáo bởi Home Directory.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.