Thư mục __MACOSX là gì?


152

Những thư mục __MACOSX này tôi vẫn thấy trong các tệp zip được tạo bởi những người trên OSX là gì? Một số mất tới 30% của tập tin.

Chương trình nào đang tạo ra các thư mục __MACOSX này và làm thế nào người dùng mac có thể tránh được lỗi này?


8
Chúng siêu khó chịu, vâng, và thường là vô nghĩa vì các nhánh tài nguyên thường rất trống rỗng. Nhưng ít nhất chúng vô hại, không giống như cách tiếp cận không chuẩn mà Apple đã thực hiện với kích thước lưu trữ 4GB với công cụ OS X tích hợp, sẽ gây nhầm lẫn cho bất kỳ công cụ nào khác và phá vỡ một lần nữa cho các tệp đủ lớn. Và này, có thể tệ hơn, nó có thể lưu trữ hai bản sao của mỗi tệp có cùng tên, một cho dữ liệu và một cho ngã ba tài nguyên, thường khiến nó không thể truy cập được, như Mac trước OSX đã từng sử dụng. Ôi Apple, tại sao bạn ghét các định dạng tệp tiêu chuẩn?
bobince

3
@bobince: thực ra, dĩa tài nguyên là một ý tưởng rất hay ... vào thời điểm đó. Ngày nay, hiệu ứng tương tự đạt được bằng cách lưu trữ tài nguyên dưới dạng các tệp riêng lẻ, hầu hết trông giống như các định dạng tệp tiêu chuẩn.

16
Không có gì sai với siêu dữ liệu như vậy, chỉ là Apple có sở trường tạo ra các định dạng của riêng họ và làm rối các định dạng hiện có với các tiện ích mở rộng không tương thích một cách vô cớ! Có dữ liệu kiểu nội dung dưới dạng siêu dữ liệu tự nó là một điều tuyệt vời và tôi rất buồn khi OS X đang tiến tới việc hack các phần mở rộng tệp của Windows như một cách thay thế. Mặc dù điều này không tệ như trên Linux, nơi hệ thống tệp hỗ trợ lưu trữ siêu dữ liệu Kiểu nội dung, nhưng không có máy tính để bàn nào sử dụng nó, thích kết hợp hoàn toàn giữa phần mở rộng tệp / mẫu tên và đánh hơi nội dung (urgh!). Thở dài, hệ điều hành hả?
bobince

@bobince: Nhưng vâng, ít nhất, định dạng mà họ tạo ra cho việc này không gây ra tác hại thực sự nào, ngoài danh sách thư mục hơi lộn xộn và lãng phí về cơ bản 1 inode và 1 khối cho mỗi ngã ba tài nguyên trống được trích xuất, trừ khi bạn sử dụng cái gì đó như NTFS (mà sẽ lưu trữ nội dung tệp trong MFT cho các tệp nhỏ như vậy), trong trường hợp đó, nó chỉ lãng phí "inode" (mục nhập MFT).
SamB

9
Có thể được sửa chữa sau khi thực tế bởizip -d filename.zip __MACOSX/\*
Chris Johnson

Câu trả lời:


52

http://www.realsoftware.com/listarchives/gettingstarted/2005-09/msg00328.html

Apple cung cấp khả năng tích hợp cho các tệp ZIP trong OS X 10.3 trở lên và các tệp này là kết quả của việc Apple lưu trữ tài nguyên theo cách an toàn. Bạn sẽ không bao giờ thấy các tệp này chạy OS X 10.3 trở lên, nhưng vì Windows và các hệ điều hành khác không hiểu dạng Tài nguyên đặc biệt này, chúng sẽ xuất hiện khi bạn nhìn thấy chúng.


4
Đó không chỉ là tài nguyên, bất cứ thứ gì ngoài nội dung tệp cơ bản đều được đặt trong tệp AppleDouble. Apple tránh xa các nhánh tài nguyên, nhưng hướng tới những thứ như thuộc tính mở rộng cũng sẽ được lưu trữ trong thùng chứa AppleDouble.
Gordon Davisson

14
Bạn làm cho nó nghe như một tính năng. Các tệp .zip cố tình thiếu trong bộ phận siêu dữ liệu. Nếu bạn muốn siêu dữ liệu, hãy sử dụng định dạng khác, không phải máy Mac. Ví dụ về triển khai zip + siêu dữ liệu phù hợp: .jar
Zenexer

16
liên kết chết, xin vui lòng sửa chữa.
Lucas - Học viện mã hóa tốt hơn

71
"vì Windows và các hệ điều hành khác không hiểu" - Ugh. Tôi chỉ ghét loại thuật ngữ này
Joe Plante

5
Chỉ cần phát hiện ra: nếu bạn đang sử dụng máy Mac, sử dụng dòng lệnh, unzip filename.zipsẽ giải nén thư mục __MACOSX / mà bạn không muốn, nhưng open filename.zipsẽ thực hiện đúng.
Edward Falk

107

Đây là một liên kết giải thích nó khá tốt. Tôi cho rằng sẽ hơi muộn để giúp Yada, nhưng cho hậu thế.

Giải thích về ngã ba tài nguyên tại Wikipedia

Phần còn lại là ý kiến ​​của tôi:

@nickf: Không bao giờ thấy các tệp này không phải là TÍNH NĂNG của các phiên bản OS X đó là FLAW. Mọi người sản xuất dữ liệu, bọc nó lại, lưu trữ nó trên các phương tiện khác nhau, v.v. Họ cần biết những gì cần thiết hoặc những gì không cần thiết. Giấu nó giữ chúng trong bóng tối.

Ý tưởng tồi tệ lâu đời về việc che giấu mọi thứ từ người dùng: Một lập trình viên, quan tâm đến sự nhanh nhạy trong việc hoàn thành công việc của chính mình, lạm dụng một cái gì đó trong miền của người dùng cuối, để dễ dàng cho chính mình.

Trong trường hợp này, anh ta đã lưu trữ dữ liệu meta trong không gian dữ liệu của người dùng, sau đó anh ta đã giấu nó khỏi người dùng. Ông đã bỏ lỡ bức tranh lớn: Người dùng sẽ không nhận ra các chi tiết ẩn. Khi anh ta đóng gói dữ liệu của mình và gửi nó đi đâu đó mà người lập trình không dự đoán được, các phần bị thiếu sẽ không được chuyển đi hoặc các phần không xác định sẽ đến mà cả người dùng và người nhận đều không thể giải thích.

Che giấu những thứ từ người dùng là xấu. Nó giả định rằng người dùng là ngu ngốc, khi chính xác hơn đó là lập trình viên là ngu ngốc, hoặc lười biếng.

Để rõ ràng, thói quen xấu này không giới hạn trong MAC. Nó ở khắp mọi nơi. Đó là hậu quả của việc các lập trình viên yêu thích các chương trình và nhà cung cấp của họ ưu tiên các mục tiêu của riêng họ trước nhu cầu của người dùng cuối.

Tóm lại.

__MACOSX:
phân của lập trình viên có mùi lạ xuất hiện từ dưới tấm thảm nơi chúng bị quét.

Lập trình viên và nhà cung cấp: Hãy giữ mọi thứ ở trạng thái mở. Khi bạn che giấu chúng, bạn làm cho mình trở nên ngu ngốc và người dùng không biết gì.


12
Câu trả lời này sẽ tốt hơn nếu nó chỉ là một câu trả lời. Sự ca ngợi mở rộng về các lập trình viên ngu ngốc và những người dùng lười biếng làm mất giá trị của nó.
Kristopher Johnson

1
@pbernatchez Trên thực tế, nếu bạn dừng lại để tìm hiểu về mọi thứ trông như thế nào và chúng phát triển như thế nào, có lẽ bạn sẽ không rời khỏi đây "những giọt nước mắt" kiêu ngạo, kiêu ngạo của chính mình. Các nhánh tài nguyên là một chi tiết triển khai (thực sự tốt đẹp!) Trước Mac OS X và người dùng chỉ tìm thấy chúng khi giao tiếp với các hệ thống khác; kể từ những năm 90, Apple đã ngày càng chuyển sang một thế giới không có tài nguyên, nhưng vẫn uốn cong về phía sau để giữ khả năng tương thích. "Lưu trữ siêu dữ liệu trong không gian dữ liệu của người dùng"? WTF? Làm thế nào xoắn bạn phải xác định "siêu dữ liệu" và "không gian dữ liệu của người dùng" để nói điều đó? Bạn phải ghét hệ thống tập tin!
hmijail

3
"Che giấu những thứ từ người dùng là xấu". Man, bạn cũng phải ghét tất cả các loại giao diện người dùng, thư viện và sự trừu tượng, và ... tốt, bất kỳ loại lập trình và máy tính nào tiên tiến hơn bàn tính.
hmijail

4
Điều này không trả lời câu hỏi. Sau khi đọc câu trả lời này, tôi vẫn không biết siêu dữ liệu nào được chứa trong thư mục _MACOSX hoặc các nhánh tài nguyên là gì. Tôi đoán mọi người đang ủng hộ điều này chỉ vì họ đồng ý với những lời tán tỉnh?
Atte Juvonen

1
Mặc dù tôi đồng ý rằng giai điệu mang tính cảm xúc không hữu ích, tôi cũng hoàn toàn đồng ý rằng việc tạo ra những thứ ẩn đôi khi cần thiết là một ý tưởng thực sự tồi tệ, chính xác như đã nêu trong câu trả lời này: người dùng sẽ (a) không gửi các tệp bị ẩn cần thiết, hoặc (b) gửi các tệp ẩn mà người nhận có thể nhìn thấy và không hiểu. Các tệp này phải được hiển thị hoặc dữ liệu phải được nhúng trong các tệp theo cách nào đó được gắn cờ là "có thể bỏ qua" bởi các hệ điều hành khác. Các tập tin và thư mục ẩn nên được sử dụng chủ yếu để bảo vệ người dùng, không giữ chúng trong bóng tối.
Mike Williamson

16

Để trả lời câu hỏi cuối cùng của bạn:

Làm thế nào người dùng mac có thể tránh được lỗi này?

Người dùng Mac OS X có thể cài đặt tiện ích lưu trữ của bên thứ 3 như Keka , sau đó yêu cầu nó không sử dụng Resource Fork, sau đó đặt nó làm máy nén mặc định.


Làm thế nào để làm điều này với Keka

Nói với Keka không sử dụng Tài nguyên

  1. Mở Keka mà không cần tệp (Từ Launchpad, Spotlight, v.v.)
  2. Nhấn ⌘ Cmd+ ,để mở Tùy chọn
  3. Chọn tab Nén
    Tab "Nén" Keka, được chọn
  4. Kiểm tra "Loại trừ các tài nguyên Mac (ví dụ: .DS_Store)"
    Một hộp kiểm ghi "Loại trừ các tài nguyên Mac (ví dụ: .DS_Store)"

Biến Keka thành máy nén mặc định

  1. Trong cùng cửa sổ Tùy chọn Keka
  2. Chọn tab Chung
    Tab "Chung" của Keka, được chọn
  3. Nhấp vào "Đặt Keka làm máy nén / giải nén mặc định" [sic]
    nhập mô tả hình ảnh ở đây

1
Điều này có thể được cải thiện khi tôi thêm một số thông tin vào 2 bước cuối cùng, "bảo nó không sử dụng Resource Fork, sau đó đặt nó làm máy nén mặc định."
Steven C. Howell

@ stvn66 Xong! Mặc dù chỉ là FYI, điều đó thường nằm ngoài phạm vi của những câu hỏi này, đó là lý do tại sao lúc đầu tôi không biết.
Ben Leggiero

2
Xin lỗi, xin lỗi. Tôi không phải là người thích cài đặt phần mềm của bên thứ 3 để khắc phục sự cố có thể khắc phục bằng phần mềm mặc định. Như Chris Johnson đã chỉ ra ở trên, zip -dsẽ loại bỏ các tài nguyên từ một tệp zipfile. Trên thực tế, tôi nghĩ rằng nếu bạn sử dụng zip ở vị trí đầu tiên, các nhánh tài nguyên sẽ không được thêm vào ở vị trí đầu tiên.
Edward Falk

1
@EdwardFalk Thật công bằng! Câu trả lời này có nghĩa là để giải quyết "Làm thế nào để tôi luôn luôn cư xử theo cách này?" vấn đề, không phải là "Làm thế nào để tôi có thể cư xử theo cách này một lần?" một.
Ben Leggiero
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.