Giải nén tệp ZIP

Không giới hạn công việc. Kích thước tệp lên đến 2,5GB. Miễn phí, vĩnh viễn.

Tất cả địa phương

Trình chuyển đổi của chúng tôi chạy trong trình duyệt của bạn, vì vậy chúng tôi không bao giờ nhìn thấy dữ liệu của bạn.

Cực nhanh

Không cần tải tệp của bạn lên máy chủ—quá trình chuyển đổi bắt đầu ngay lập tức.

An toàn theo mặc định

Khác với các trình chuyển đổi khác, tệp của bạn không bao giờ được tải lên chúng tôi.

Định dạng ZIP là gì?

Lưu trữ Zip

Định dạng tệp ZIP là định dạng nén và lưu trữ được sử dụng rộng rãi, cho phép nhiều tệp được đóng gói lại với nhau thành một tệp nén duy nhất. Định dạng này ban đầu được Phil Katz tạo ra vào năm 1989 và kể từ đó đã trở thành một tiêu chuẩn phổ biến cho việc nén và phân phối tệp. Định dạng ZIP sử dụng kết hợp các thuật toán nén không mất dữ liệu để giảm kích thước của các tệp được chứa, đồng thời vẫn cho phép giải nén từng tệp theo yêu cầu.

Kho lưu trữ ZIP bao gồm một chuỗi các bản ghi tệp, mỗi bản ghi đại diện cho một tệp đã nén, theo sau là một thư mục trung tâm ở cuối kho lưu trữ. Mỗi bản ghi tệp bao gồm siêu dữ liệu về tệp, chẳng hạn như tên, kích thước và dấu thời gian, cũng như chính dữ liệu tệp đã nén. Thư mục trung tâm chứa danh sách tất cả các bản ghi tệp trong kho lưu trữ, cùng với siêu dữ liệu bổ sung.

Định dạng ZIP hỗ trợ một số phương pháp nén, nhưng phương pháp được sử dụng phổ biến nhất là DEFLATE, dựa trên thuật toán LZ77 và mã hóa Huffman. DEFLATE hoạt động bằng cách tìm các chuỗi dữ liệu lặp lại và thay thế chúng bằng các tham chiếu đến các lần xuất hiện trước đó, kết hợp với mã hóa Huffman để biểu diễn dữ liệu đã nén một cách hiệu quả. Điều này cho phép giảm kích thước đáng kể, đặc biệt là đối với các tệp dạng văn bản.

Để tạo kho lưu trữ ZIP, các tệp trước tiên được nén riêng lẻ bằng phương pháp nén đã chọn. Sau đó, mỗi tệp đã nén được thêm vào kho lưu trữ dưới dạng bản ghi tệp, bao gồm tiêu đề tệp cục bộ theo sau là dữ liệu đã nén. Tiêu đề tệp cục bộ chứa siêu dữ liệu như tên tệp, phương pháp nén, tổng kiểm tra CRC-32, kích thước đã nén và chưa nén và dấu thời gian.

Sau khi tất cả các bản ghi tệp đã được thêm vào, thư mục trung tâm được ghi vào cuối kho lưu trữ. Thư mục trung tâm bắt đầu bằng một chữ ký và bao gồm tiêu đề tệp cho mỗi bản ghi tệp, chứa siêu dữ liệu tương tự như tiêu đề tệp cục bộ. Ngoài ra, thư mục trung tâm bao gồm thông tin về toàn bộ kho lưu trữ, chẳng hạn như số lượng tệp và kích thước của thư mục trung tâm.

Cuối cùng, kho lưu trữ ZIP được kết thúc bằng bản ghi kết thúc thư mục trung tâm, bao gồm chữ ký, số đĩa mà thư mục trung tâm bắt đầu, số bản ghi thư mục trung tâm, kích thước của thư mục trung tâm, độ lệch của điểm bắt đầu của thư mục trung tâm so với điểm bắt đầu của kho lưu trữ và trường chú thích.

Một trong những tính năng chính của định dạng ZIP là khả năng hỗ trợ nhiều phương pháp nén khác nhau. Ngoài DEFLATE, định dạng này còn hỗ trợ phương pháp STORE (không nén), BZIP2, LZMA, PPMd và các phương pháp khác. Tính linh hoạt này cho phép cân bằng giữa tỷ lệ nén và thời gian xử lý, tùy thuộc vào các yêu cầu cụ thể của trường hợp sử dụng.

Một khía cạnh quan trọng khác của định dạng ZIP là hỗ trợ mã hóa tệp và thư mục. Sơ đồ mã hóa ZIP truyền thống sử dụng phương pháp mã hóa dựa trên mật khẩu đơn giản, nhưng phương pháp này đã phần lớn được thay thế bằng mã hóa AES an toàn hơn trong các công cụ ZIP hiện đại. Khi một tệp được mã hóa, dữ liệu đã nén của tệp đó được mã hóa bằng phương pháp mã hóa đã chọn và siêu dữ liệu bổ sung được thêm vào tiêu đề tệp để chỉ trạng thái mã hóa.

Định dạng ZIP cũng bao gồm các tính năng để kiểm tra tính toàn vẹn dữ liệu và phát hiện lỗi. Mỗi bản ghi tệp bao gồm tổng kiểm tra CRC-32 của dữ liệu chưa nén, cho phép xác minh tính toàn vẹn của tệp khi giải nén. Ngoài ra, thư mục trung tâm bao gồm tổng kiểm tra CRC-32 của toàn bộ cấu trúc thư mục trung tâm, cung cấp một lớp kiểm tra tính toàn vẹn bổ sung cho toàn bộ kho lưu trữ.

Trong những năm qua, một số tiện ích mở rộng và cải tiến đã được thực hiện đối với định dạng ZIP để cải thiện chức năng và hiệu quả của định dạng này. Một trong những tiện ích mở rộng đó là định dạng ZIP64, cho phép lưu trữ và tệp có kích thước lớn hơn 4 GB. Điều này đạt được bằng cách sử dụng các trường 64 bit cho các giá trị kích thước và độ lệch, thay vì các trường 32 bit ban đầu. Một tiện ích mở rộng khác là sử dụng mã hóa tên tệp và chú thích, cho phép sử dụng các ký tự Unicode trong tên tệp và chú thích.

Định dạng ZIP cũng đã được điều chỉnh để sử dụng trong nhiều bối cảnh chuyên biệt khác nhau, chẳng hạn như định dạng OpenDocument được sử dụng bởi các bộ ứng dụng văn phòng, định dạng JAR (Java Archive) được sử dụng để phân phối các ứng dụng Java và định dạng EPUB được sử dụng cho sách điện tử. Trong những trường hợp này, định dạng ZIP đóng vai trò là một vùng chứa cho các loại tệp và siêu dữ liệu cụ thể mà các định dạng tương ứng yêu cầu.

Mặc dù đã có tuổi đời, định dạng ZIP vẫn được sử dụng rộng rãi và được hỗ trợ trên nhiều nền tảng và thiết bị. Tính đơn giản, hiệu quả và khả năng tương thích của định dạng này đã biến định dạng này trở thành lựa chọn hàng đầu cho việc nén và phân phối tệp. Tuy nhiên, định dạng ZIP cũng có một số hạn chế, chẳng hạn như thiếu hỗ trợ tích hợp cho các kho lưu trữ chia nhỏ, nén rắn hoặc bản ghi khôi phục.

Để giải quyết một số hạn chế này, các định dạng lưu trữ thay thế đã được phát triển, chẳng hạn như RAR, 7z và TAR. Các định dạng này cung cấp các tính năng bổ sung và tỷ lệ nén được cải thiện trong một số trường hợp, nhưng chúng có thể không có cùng mức hỗ trợ phổ biến như ZIP.

Tóm lại, định dạng tệp ZIP là một định dạng nén và lưu trữ linh hoạt và hiệu quả đã vượt qua thử thách của thời gian. Khả năng đóng gói nhiều tệp lại với nhau, nén chúng một cách hiệu quả và cung cấp khả năng kiểm tra tính toàn vẹn dữ liệu đã biến định dạng này trở thành một công cụ thiết yếu để lưu trữ và phân phối tệp. Mặc dù có một số hạn chế, định dạng ZIP vẫn tiếp tục được sử dụng rộng rãi và được hỗ trợ, nhờ vào tính đơn giản và khả năng tương thích của định dạng này.

Nén tệp giảm độ dư thừa để cùng một lượng thông tin sử dụng ít bit hơn. Giới hạn trên được quyết định bởi lý thuyết thông tin: với nén không mất dữ liệu, giới hạn là entropy của nguồn (xem định lý mã nguồn của Shannon source coding theorem và bài báo gốc năm 1948 “A Mathematical Theory of Communication”). Với nén mất dữ liệu, sự đánh đổi giữa bitrate và chất lượng được mô tả bởi lý thuyết rate–distortion.

Hai trụ cột: mô hình hóa và mã hóa

Hầu hết bộ nén có hai giai đoạn. Đầu tiên một mô hình dự đoán hoặc lộ ra cấu trúc trong dữ liệu. Sau đó một bộ mã biến các dự đoán đó thành mẫu bit gần tối ưu. Gia đình kinh điển là Lempel–Ziv LZ77 (1977) và LZ78 (1978) phát hiện chuỗi lặp rồi phát các tham chiếu thay vì byte thô. Ở phía mã hóa mã Huffman (bài gốc 1952) gán mã ngắn hơn cho ký hiệu có xác suất cao. Mã hóa số học range coding tiến gần hơn nữa tới giới hạn entropy, trong khi Asymmetric Numeral Systems (ANS) hiện đại đạt được tỷ lệ tương tự với các bảng tra cứu nhanh.

Các định dạng phổ biến thực sự làm gì

DEFLATE (dùng bởi gzip, zlib, ZIP) kết hợp LZ77 và Huffman. Đặc tả đều mở: DEFLATE RFC 1951, lớp bọc zlib RFC 1950và định dạng gzip RFC 1952. Gzip được thiết kế cho streaming và không cung cấp truy cập ngẫu nhiên. PNG chuẩn hóa DEFLATE là phương pháp duy nhất (cửa sổ tối đa 32 KiB) theo đặc tả “Compression method 0…” W3C/ISO PNG 2nd Edition.

Zstandard (zstd): bộ nén đa dụng mới cung cấp tỷ lệ cao và giải nén cực nhanh. Định dạng có trong RFC 8878 (cùng bản HTML) và đặc tả tham chiếu trên GitHub. Như gzip, frame cơ bản không nhắm tới truy cập ngẫu nhiên. Siêu năng lực của zstd là từ điển: mẫu nhỏ từ tập dữ liệu giúp hàng loạt tệp nhỏ/giống nhau nén tốt hơn (xem tài liệu python-zstandard ví dụ của Nigel Tao). Triển khai hỗ trợ cả từ điển “unstructured” lẫn “structured” (thảo luận).

Brotli: tối ưu cho nội dung web (font WOFF2, HTTP). Kết hợp từ điển tĩnh và lõi LZ+entropy giống DEFLATE. Đặc tả là RFC 7932, mô tả cửa sổ 2WBITS−16 với WBITS [10, 24] (1 KiB−16 B tới 16 MiB−16 B) và rằng nó không cung cấp truy cập ngẫu nhiên. Brotli thường vượt gzip trên văn bản web và giải nén nhanh.

Vỏ chứa ZIP: ZIP là kho tệp có thể lưu nhiều phương pháp nén (deflate, store, zstd...). Chuẩn thực tế là APPNOTE của PKWARE (xem cổng APPNOTE, bản lưu trữvà tóm tắt của LC ZIP File Format (PKWARE) / ZIP 6.3.3).

Tốc độ so với tỷ lệ

LZ4 ưu tiên tốc độ tuyệt đối với tỷ lệ vừa phải. Xem trang dự án định dạng frame. Lý tưởng cho cache trong RAM, telemetri hoặc đường nóng cần giải nén gần tốc độ bộ nhớ.

XZ / LZMA hướng đến mật độ cao (tỷ lệ tốt) với thời gian nén chậm hơn. XZ là vỏ chứa; công việc chính do LZMA/LZMA2 (mô hình LZ77 + range coding) đảm nhiệm. Xem định dạng .xz, đặc tả LZMA (Pavlov)và ghi chú kernel Linux về XZ Embedded. XZ thường nén tốt hơn gzip và cạnh tranh với codec hiện đại, nhưng mã hóa lâu hơn.

bzip2 dùng Biến đổi Burrows–Wheeler (BWT), move-to-front, RLE và Huffman. Thường nhỏ hơn gzip nhưng chậm hơn; xem hướng dẫn chính thức và trang man (Linux).

Cửa sổ, khối và truy cập ngẫu nhiên

Kích thước “cửa sổ” rất quan trọng. Tham chiếu DEFLATE chỉ nhìn lại 32 KiB (RFC 1951) và giới hạn 32 KiB của PNG được nêu ở đây. Brotli hỗ trợ cửa sổ từ ~1 KiB đến 16 MiB (RFC 7932). Zstd điều chỉnh cửa sổ và độ sâu tìm kiếm theo level (RFC 8878). Dòng cơ sở của gzip/zstd/brotli hướng tới giải nén tuần tự; bản thân định dạng không hứa truy cập ngẫu nhiên, nhưng các vỏ chứa (tar có chỉ mục, framing theo khối, chỉ mục chuyên biệt) có thể bổ sung.

Lossless và lossy

Các định dạng trên là lossless: bạn khôi phục đúng byte ban đầu. Codec media thường lossy: loại bỏ chi tiết khó nhận biết để giảm bitrate. Với ảnh, JPEG cổ điển (DCT, lượng tử hóa, mã entropy) được chuẩn hóa trong ITU-T T.81 / ISO/IEC 10918-1. Với âm thanh, MP3 (MPEG-1 Layer III) và AAC (MPEG-2/4) dùng mô hình cảm nhận và biến đổi MDCT (xem ISO/IEC 11172-3, ISO/IEC 13818-7và tổng quan MDCT tại đây). Lossy và lossless có thể cùng tồn tại (ví dụ PNG cho UI, codec web cho ảnh/video/audio).

Mẹo thực tế

  • Chọn đúng việc. Văn bản/font web brotli. Tệp chung và sao lưu zstd (giải nén nhanh, nhiều mức để đổi thời gian lấy tỷ lệ). Đường truyền siêu nhanh và telemetri lz4. Mật độ tối đa cho lưu trữ dài hạn khi thời gian mã hóa chấp nhận được xz/LZMA.
  • Tệp nhỏ? Huấn luyện và gửi kèm từ điển zstd (tài liệu) / (ví dụ). Có thể thu nhỏ mạnh hàng chục đối tượng nhỏ tương tự.
  • Tính tương thích. Khi trao đổi nhiều tệp, hãy dùng vỏ chứa (ZIP, tar) + bộ nén. APPNOTE của ZIP định nghĩa phương thức và tính năng; xem PKWARE APPNOTE và tóm tắt LC tại đây.
  • Đo trên dữ liệu của bạn. Tỷ lệ và tốc độ phụ thuộc tập dữ liệu. Nhiều repo công bố benchmark (ví dụ README LZ4 dẫn corpus Silesia tại đây), nhưng luôn kiểm chứng nội bộ.

Tài liệu tham khảo chính (đào sâu)

Lý thuyết Shannon 1948 · Rate–distortion · Mã hóa Huffman 1952 · Mã số học · Range coding · ANS. Định dạng DEFLATE · zlib · gzip · Zstandard · Brotli · LZ4 frame · định dạng XZ. Chuỗi BWT Burrows–Wheeler (1994) · hướng dẫn bzip2. Media JPEG T.81 · MP3 ISO/IEC 11172-3 · AAC ISO/IEC 13818-7 · MDCT.

Tóm lại: hãy chọn bộ nén phù hợp dữ liệu và ràng buộc của bạn, đo trên dữ liệu thực và đừng quên lợi ích từ từ điển cùng cách đóng gói thông minh. Khi ghép đúng, bạn sẽ có tệp nhỏ hơn, truyền nhanh hơn và ứng dụng phản hồi hơn mà không hy sinh độ chính xác hay tính di động.

Câu hỏi thường gặp

Nén file là gì?

Nén file là quá trình giảm kích thước của một file hoặc các file, thường để tiết kiệm không gian lưu trữ hoặc tăng tốc độ truyền trên mạng.

Cách nén file hoạt động như thế nào?

Nén file hoạt động bằng cách xác định và loại bỏ sự trùng lặp trong dữ liệu. Nó sử dụng thuật toán để mã hóa dữ liệu gốc trong một không gian nhỏ hơn.

Có những loại nén file nào?

Hai loại chính của nén file là nén lossless và lossy. Nén lossless cho phép phục hồi hoàn toàn file gốc, trong khi nén lossy cho phép giảm kích thước đáng kể hơn nhưng có thể mất một phần chất lượng dữ liệu.

Có thể cho một ví dụ về công cụ nén file?

Một ví dụ phổ biến về công cụ nén file là WinZip, hỗ trợ nhiều định dạng nén bao gồm ZIP và RAR.

Nén file có ảnh hưởng đến chất lượng của file không?

Với nén lossless, chất lượng không thay đổi. Tuy nhiên, với nén lossy, có thể có sự giảm chất lượng rõ rệt do nó loại bỏ dữ liệu ít quan trọng để giảm kích thước file đáng kể hơn.

Nén file có an toàn không?

Có, nén file an toàn về mặt tính toàn vẹn của dữ liệu, đặc biệt với nén lossless. Tuy nhiên, giống như bất kỳ file nào, file nén có thể bị mục tiêu bởi malware hoặc virus, vì vậy luôn quan trọng khi có phần mềm bảo mật uy tín.

Có thể nén những loại file nào?

Hầu như tất cả các loại file đều có thể được nén, bao gồm file văn bản, hình ảnh, audio, video và file phần mềm. Tuy nhiên, mức độ nén có thể thực hiện đáng kể có thể thay đổi giữa các loại file khác nhau.

ZIP file là gì?

ZIP file là một loại định dạng file sử dụng nén lossless để giảm kích thước của một hoặc nhiều file. Nhiều file trong một ZIP file effectively được gói lại thành một file duy nhất, điều này cũng giúp việc chia sẻ dễ dàng hơn.

Tôi có thể nén một file đã được nén không?

Về mặt kỹ thuật, có, mặc dù việc giảm kích thước thêm có thể tối thiểu hoặc thậm chí phản tác dụng. Nén một file đã được nén đôi khi có thể tăng kích thước do metadata được thêm vào bởi thuật toán nén.

Làm thế nào để giải nén một file?

Để giải nén một file, bạn thường cần một công cụ giải nén hoặc giải nén, như WinZip hoặc 7-Zip. Những công cụ này có thể trích xuất các file gốc từ định dạng nén.