Có thể nén một tập tin phá vỡ nó?


85

Tôi chỉ yêu cầu ai đó gửi cho tôi một psdtập tin nén .

Họ từ chối, trích dẫn rằng việc nén một tập tin có thể phá vỡ các phông chữ .

Tôi giả sử nén một tập tin là hoàn toàn có thể đảo ngược, do đó tại sao nó thường được sử dụng. Tôi nghĩ rằng người khác là không chính xác.

Có sự thật nào về việc nén phá vỡ nội dung của tập tin không?


51
Có thể người khác đã nhầm lẫn việc nén một tệp (lossless) với nén jpeg (lossy) có thể làm cho thử nghiệm trông xấu xí.
Matt H

Tôi biết rằng tôi đã từng gặp sự cố tương thích cho các tệp zip, vì định dạng tệp được sử dụng trên tất cả các nền tảng ...
jokoon

1
Tôi chắc chắn đã trải qua một số trường hợp 'bệnh lý' nhất định trong đó cả các cơ sở tích hợp của Winrar và WinXP đều phá vỡ các tệp (hàng chục nghìn trong một tệp zip). Đây là 4-5 năm trước, và giải pháp duy nhất tôi có thể tìm thấy vào lúc đó là sử dụng 7-zip. Theo cách tốt nhất tôi có thể nhớ, ngay cả 7-Zip cũng không thể giải nén thành công các tệp được tạo bởi các thói quen khác, cho thấy lỗi là ở phần nén, không phải là giải nén. Rõ ràng là tôi đã chọn sử dụng 7-zip cho cả hai bên trong hệ thống sản xuất.
FumbleFingers

1
@jokoon: Tôi không chắc chắn việc nói về định dạng tệp ... được sử dụng trên tất cả các nền tảng là hợp lệ . Có khá nhiều định dạng nội bộ khác nhau được sử dụng trong các tệp zip và luôn có thể tạo một kho lưu trữ bằng một thói quen đóng gói bằng cách sử dụng một định dạng được hỗ trợ hoàn hảo bởi một số thói quen khác mà bạn tình cờ sử dụng tại thời điểm giải nén.
FumbleFingers

@Fumble; Tuy nhiên, bất kỳ người lưu trữ tử tế nào cũng nên nắm bắt thay đổi băm và báo cáo hoạt động là một thất bại - không để lại một tệp bị hỏng nằm xung quanh.
Phoshi

Câu trả lời:


133

Không, nén một tập tin có thể phá vỡ nó. Cung cấp tệp zip của bạn không bị hỏng, nó sẽ sao chép tệp giống hệt khi giải nén.

Trong trường hợp này, sự khác biệt giữa các phông chữ được cài đặt trên hai hệ thống khác nhau có thể gây ra sự cố nhưng điều đó hoàn toàn không liên quan đến quá trình zip / giải nén.


4
Đó là những gì tôi nghi ngờ. Cảm ơn câu trả lời của bạn.
alex

34
Ngoài ra, một số định dạng zip hỗ trợ dự phòng, có nghĩa là lưu trữ dưới dạng zip thực sự có thể an toàn hơn so với lưu trữ tệp đơn giản.
BlueRaja - Daniel Pflughoeft

Bạn không nên nói nhanh điều này, có rất nhiều triển khai tệp nén / giải nén ngoài đó, đếm tất cả các hệ điều hành hiện có và các công cụ khác có thể tạo tệp zip, tôi sẽ không ngạc nhiên khi một số triển khai không quan tâm đến một số khác .
jokoon

@jokoon: sau đó những tập tin đó sẽ bị hỏng, mà anh ấy loại trừ một cách rõ ràng
mbx

3
-1 Về lý thuyết thì điều này là đúng, nhưng trong thực tế, có một số vấn đề với phông chữ Mac được giải nén trên PC là 0 byte. Điều này là do một ngã ba tài nguyên được tạo ra. Hãy thử nó cho chính mình và nhìn thấy.
Django Reinhardt

80

Trong sử dụng chung , zip là lossless (giả sử không có lỗi), nhưng có một kịch bản có thể áp dụng cho mất dữ liệu: Luồng dữ liệu thay thế NTFS. Tính năng ít được sử dụng này cho phép một tệp duy nhất có nhiều bộ nội dung độc lập . Hầu hết các mã sẽ chỉ nhìn thấy luồng không tên , nhưng những người khác có thể tồn tại.

Vì thế; nếu một chương trình quyết định lưu trữ dữ liệu trong Luồng dữ liệu thay thế NTFS, máy khách zip của bạn sẽ không thấy phần đó (nó cần phải yêu cầu rõ ràng và RAR là phần duy nhất hiện thực hiện điều này ).

Nhưng để nhấn mạnh: điều này rất hiếm khi được sử dụng, và không bình thường với những thứ như PSD. Tôi nghi ngờ bạn bè / cộng sự của bạn chỉ đơn giản là sai.


11
Wow, đây là kiến ​​thức hoàn toàn mới với tôi.
kizzx2

5
Mới đối với tôi và kỳ quái. Khi nào một tập tin không phải là một tập tin? Khi nội dung của nó đột biến theo ý muốn. Tôi đã nghe nói về những hành vi sai trái tồi tệ hơn, nhưng không nhiều.
msw

7
@msw - họ không đột biến theo ý muốn; đơn giản - có thể có nhiều hơn một khối dữ liệu được liên kết với một bản ghi tệp. Hầu như luôn luôn có chính xác một (nó rất hiếm khi được sử dụng), nhưng ...
Marc Gravell

4
Quay trở lại SO! Quá kỹ thuật! (tất nhiên chỉ đùa thôi;)
Byron Whitlock


32

Có những trường hợp trong đó một phông chữ Mac có thể không giống nhau nếu nó được nén và sau đó được giải nén. Điều này có thể không phá vỡ nó, nhưng trái với một số tuyên bố ở trên, quy trình có thể không cung cấp một tệp giống hệt nhau.

Các trường hợp được thảo luận ở đây:

http://xahlee.org/UnixResource_dir/macosx.html

http://ask.metafilter.com/59789/How-to-email-my-font

Nhưng tóm lại:

  1. Nếu chúng là các phông chữ cũ hơn có chứa các nhánh tài nguyên và người dùng có phiên bản cũ hơn của Mac OS X, thường là 10,4 hoặc cũ hơn. Các phông chữ kế thừa như thế này hoạt động trên OS X mặc dù ban đầu chúng được dành cho OS 9 và các phiên bản trước đó của hệ điều hành Macintosh. Hoàn toàn có khả năng (và, theo kinh nghiệm của tôi, phổ biến) rằng một số người vẫn đang sử dụng một thư viện phông chữ mà họ đã xây dựng từ 20 năm trước. Điển hình là những nghệ sĩ và đạo diễn nghệ thuật. Ví dụ: tôi có một vài phông chữ có ngày tạo năm 1993 và hàng trăm với ngày tạo năm 1998, hầu hết có các nhánh tài nguyên. Chắc chắn tôi nên chuyển đổi các định dạng này sang các định dạng hiện đại hơn hoặc ngừng sử dụng chúng, nhưng hãy đối mặt với nó: một khi bạn mua Thư viện Phông chữ Adobe, bạn sẽ không bao giờ muốn mua lại. Trong những năm làm việc với các giám đốc nghệ thuật trong quảng cáo,

  2. Một số siêu dữ liệu sẽ bị tước trong các phiên bản nhất định của hệ điều hành. Siêu dữ liệu có thể là những thứ được thêm vào trường thông tin của tệp. Điều này sẽ không phá vỡ tệp, nhưng một lần nữa, cũng như zip-unzip sẽ tạo ra một tệp giống hệt nhau.

PS: Tôi giả sử ở đây rằng nếu một người đang nén tệp PSD để gửi cho người khác, thì nó không bị làm phẳng và phông chữ chưa được chuyển đổi thành phác thảo, điều đó có nghĩa là người ta cũng sẽ cung cấp các tệp phông chữ với PSD để người ở cuối nhận có thể tự thay đổi tệp. Đây là một thực tế phổ biến.


2
+1 - Tôi ước tôi có thể cho điểm này đủ để đẩy nó lên đỉnh của ngăn xếp. Mac OS có cả hai biến thể phông chữ Loại 1 và TrueType trong đó dữ liệu phông chữ được lưu trữ trong ngã ba tài nguyên. Mặc dù các công cụ zip / giải nén riêng trong HĐH có thể xử lý tình huống này một cách duyên dáng, nhưng không phải tất cả các công cụ (đặc biệt là các công cụ dòng lệnh được chuyển sang OS X). Điều tồi tệ hơn, không nén các phông chữ và cố gắng gửi chúng qua email hoặc FTP sẽ phá vỡ chúng!
afrazier

1
Nhưng vấn đề ở đây dường như là ở cách bạn nén chúng, chứ không phải là liệu bạn có thể. Có vẻ như cần một chương trình hiểu các nhánh tài nguyên và bạn phải biết cách sử dụng nó. Tôi đang đọc đúng không?
uSlackr

@uSlackr, đúng, nhưng vấn đề vẫn tồn tại ở cuối nhận. Nếu kho lưu trữ sau đó được Windows di chuyển, bạn có thể sẽ nhận được một chồng các tệp phông chữ vô dụng vì mặc dù Windows (cụ thể là NTFS) không cho phép nhiều luồng dữ liệu trong một tệp, các phông chữ trên Windows không hoạt động theo cách đó. Tuy nhiên, bản thân tệp PSD có khả năng là máy tính xách tay Mac và Windows di động.
RBerteig

+1 - làm ví dụ, lưu phông chữ Mac của bạn trên ổ đĩa mạng và sau đó xem chúng lớn như thế nào từ PC Windows hoặc Linux - 0 byte! Đó là một ngã ba tài nguyên gây nhầm lẫn cho ý tưởng 'nó chỉ hoạt động'.
ʍǝɥʇɐɯ

Vâng, đó là một thực tế nổi tiếng trong ngành công nghiệp của tôi rằng phông chữ Mac không nén tốt. Thông thường người dùng PC sẽ giải nén chúng 0 byte.
Django Reinhardt

14

ZIP sử dụng tổng kiểm tra để kiểm tra xem tệp đã giải nén có giống hệt như trước khi đóng gói không.

Vì vậy, nếu nó bị thay đổi trong một số lý do (ví dụ như kho lưu trữ bị hỏng) - nó thậm chí sẽ không được giải nén.


không liên quan vì zip đang sử dụng nén không mất dữ liệu (hoặc 'lưu trữ', nén có thể bị tắt). Kiểm tra chỉ là để ong có thể cung cấp một số thông tin phản hồi nếu có sự cố.
akira

13
Tha thứ cho nhà sư phạm, nhưng ZIP không sử dụng tổng kiểm tra - nó sử dụng kiểm tra dự phòng chu kỳ 32 bit (còn gọi là CRC-32 ) để phát hiện phạm vi lỗi rộng hơn nhiều.
Bevan

5
Thuật ngữ "tổng kiểm tra" rõ ràng đã có ý nghĩa rộng hơn so với định nghĩa ban đầu của nó nếu mọi người có thể [và họ] gọi kết quả của hàm băm mật mã là "tổng kiểm".
Random832

9

Chỉ khi họ đang làm điều gì đó ngớ ngẩn như thực hiện chuyển đổi chế độ văn bản trên nó hoặc nếu có một zip / giải nén bị hỏng ở đâu đó bị nhầm lẫn bởi một zip được nhúng. (Những lỗi như vậy đã xảy ra trong quá khứ - có nghĩa là có thể 10 năm trước.)


4

Zip sử dụng thuật toán nén không mất dữ liệu để đảm bảo dữ liệu bạn nhận được giống hệt với dữ liệu bạn đưa vào.

(BTW, Các công nghệ khác như jpg, mpeg, mp3, sử dụng các kỹ thuật mất mát để nén với lý thuyết rằng mắt và tai của chúng ta không quá nhạy cảm)


0

Sự thật duy nhất tôi có thể thấy trong tuyên bố "nén phông chữ" là nếu bản thân định dạng tệp PSD có phiên bản "nén" hoặc tùy chọn bạn có thể bật trong bất kỳ chương trình nào tạo các tệp này và tùy chọn này bằng cách nào đó xử lý các phông chữ khác nhau.

Sử dụng bất kỳ chương trình zip nào cũng được, trừ khi nó có lỗi.

Đáp lại Marc, cũng có các vấn đề về hệ thống tệp tiềm năng trên các hệ thống tệp EXT nếu bạn thử và nén một cấu trúc thư mục chứa các liên kết mềm và cứng ở định dạng nén mà không hiểu những điều này (đó là lý do tại sao tôi luôn tạo một .tar.gz của một .zip ở đó). Ngoài ra, nén các liên kết mềm với các đường dẫn tương đối, sau đó giải nén chúng ở một nơi khác sẽ không hoạt động, nhưng đó không phải là lỗi của chương trình zip.


0

Nếu họ đã gặp phải vấn đề đó trước đó (nén lỗi PSD) thì phần mềm máy nén của họ bị lỗi, họ không bao gồm tất cả các tệp họ cần trên PSD và / hoặc máy tính của họ bị nhiễm vi-rút.

Tôi sẽ hỏi họ xem họ có bị hỏng tương tự không bằng cách di chuyển tệp vào đĩa usb, chỉ để loại bỏ tùy chọn cuối cùng đó.


0

Chỉ cần thêm một cảnh báo nữa cho đầy đủ: Việc nén có thể khiến siêu dữ liệu của tệp, chẳng hạn như quyền hoặc thời gian truy cập lần cuối bị mất.

Tôi không tin rằng thường liên quan đến các tệp và phông chữ PSD.


Tôi nghĩ có một sự hiểu lầm đối với khái niệm thuật toán nén không mất dữ liệu và các chương trình thực hiện nhiệm vụ này. Phương tiện không mất dữ liệu, luồng nhị phân được nén sẽ được giải nén thành luồng nhị phân đầu ra giống hệt nhau. Thông tin meta phụ thuộc vào HĐH và phải được xử lý bởi HĐH và / hoặc ứng dụng.
Bora

1
Cảm ơn, @Bora, nhưng tôi không có sự hiểu lầm như vậy. Tôi nhận ra việc nén không ảnh hưởng đến dữ liệu thực tế trong tệp. Tôi đang đề xuất một nguyên nhân "bên ngoài" có thể đánh lừa mọi người nghĩ rằng zip làm hỏng các tập tin và thư mục của họ. Tôi đã bị bắt gặp trong quá khứ bằng cách khôi phục các bản sao lưu được nén, chỉ để thấy rằng các ứng dụng của tôi không còn hoạt động nữa, vì chúng phụ thuộc vào dữ liệu meta mà tôi không mang theo. (Không phải là một sự hiểu lầm cơ bản về phía tôi, mà chỉ là một sự giám sát.)
Oddthinking

0

Zip có thể làm hỏng tên tập tin. Zip như vậy không sử dụng unicode. Mã hóa tên tệp là không xác định và trên ngôn ngữ hiện tại của windows được sử dụng.

Do đó, khi được chuyển sang một hệ thống khác, tên tệp của bạn sẽ bị rối tung.

Có một phần mở rộng cho định dạng Zip mà hầu hết các chương trình gần đây (winzip kể từ phiên bản 11 tôi nghĩ) sử dụng.

Tôi thích 7z eversince Tôi đã có một zip chứa đầy tên tiếng Nhật không thể giải nén nó.


0

Một tệp zip được cho là có thể sao chép chính xác nội dung.

Mặc dù vậy, một lưu ý liên quan - việc khôi phục dữ liệu sẽ khó khăn hơn nếu tệp zip bị hỏng , so với khi dữ liệu ở định dạng ban đầu. Tại sao? Nhiều định dạng tệp đã được xây dựng dự phòng và được thiết kế sao cho các lỗi nhỏ có thể sửa được hoặc các lỗi nhỏ không nghiêm trọng.

Hãy tưởng tượng một tập tin video. Trong hầu hết các định dạng, nếu một phần nhỏ bị hỏng, bạn sẽ thấy nhấp nháy tạm thời trong phần nhỏ đó của video nhưng vẫn có thể xem video. Nhưng nếu tệp video được nén, khả năng sửa lỗi sẽ giảm và tùy thuộc vào mức độ tham nhũng, bạn chỉ có thể không giải nén được tệp / xem video. (Đây là ví dụ giả định vì nó vô dụng để nén hầu hết các định dạng video trong mọi trường hợp).

Điều này đúng với bất kỳ định dạng nén nào - nén theo định nghĩa sẽ làm giảm khả năng sửa lỗi và do đó khả năng sửa lỗi và sự đánh đổi của nó.


Như một nhận xét ở trên, một số định dạng tệp zip hỗ trợ dự phòng. Điều này có thể làm cho nó thậm chí an toàn hơn so với định dạng ban đầu.
DMan
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.