RAR (Roshal Archive) là định dạng tệp lưu trữ độc quyền do Eugene Roshal phát triển. Lần đầu tiên được phát hành vào năm 1993 và kể từ đó đã trở thành lựa chọn phổ biến để nén và lưu trữ dữ liệu nhờ khả năng nén hiệu quả, hỗ trợ nhiều ổ đĩa, phục hồi lỗi và mã hóa mạnh mẽ. Định dạng này sử dụng kết hợp các thuật toán nén không mất dữ liệu, bao gồm LZSS, PPM và mã hóa Huffman, để đạt được tỷ lệ nén cao trong khi vẫn bảo toàn tính toàn vẹn của dữ liệu.
Lưu trữ RAR bao gồm một loạt "khối" chứa các tệp nén, thư mục và siêu dữ liệu. Lưu trữ bắt đầu bằng một khối đánh dấu, xác định tệp là lưu trữ RAR và chỉ định phiên bản lưu trữ. Tiếp theo khối đánh dấu, lưu trữ chứa một khối tiêu đề chính cung cấp thông tin chung về lưu trữ, chẳng hạn như tổng kích thước, số lượng ổ đĩa và phương pháp mã hóa được sử dụng (nếu có).
Mỗi tệp nén trong lưu trữ được lưu trữ dưới dạng khối tiêu đề tệp theo sau là một hoặc nhiều khối dữ liệu nén. Khối tiêu đề tệp chứa siêu dữ liệu về tệp, chẳng hạn như tên, kích thước, dấu thời gian, thuộc tính và tổng kiểm tra CRC32. Các khối dữ liệu nén chứa dữ liệu tệp nén thực tế, có thể được chia thành nhiều khối nếu cần.
RAR sử dụng phương pháp lưu trữ vững chắc, nghĩa là các tệp được nén lại với nhau thành một luồng dữ liệu liên tục duy nhất, thay vì được nén riêng lẻ. Phương pháp này có thể dẫn đến tỷ lệ nén cao hơn, đặc biệt đối với các bộ sưu tập các tệp tương tự, vì trình nén có thể tận dụng sự trùng lặp giữa các tệp. Tuy nhiên, lưu trữ vững chắc có thể ít khả năng chống lại lỗi dữ liệu hơn, vì một lỗi duy nhất có thể ảnh hưởng đến nhiều tệp.
Để đảm bảo tính toàn vẹn của dữ liệu, RAR sử dụng hệ thống bản ghi phục hồi. Bản ghi phục hồi là các khối đặc biệt chứa thông tin dự phòng về cấu trúc lưu trữ và siêu dữ liệu tệp. Trong trường hợp dữ liệu bị hỏng, các bản ghi này có thể được sử dụng để xây dựng lại các phần bị hỏng của lưu trữ. Người dùng có thể định cấu hình số lượng và kích thước của các bản ghi phục hồi khi tạo lưu trữ.
RAR hỗ trợ lưu trữ nhiều ổ đĩa, cho phép chia các lưu trữ lớn thành các phần nhỏ hơn, dễ quản lý hơn. Mỗi ổ đĩa trong lưu trữ nhiều ổ đĩa là một tệp RAR riêng biệt có khối đánh dấu và tiêu đề riêng, nhưng có thông tin bổ sung cho biết vị trí của n ó trong tập hợp. Lưu trữ nhiều ổ đĩa có thể hữu ích để lưu trữ hoặc truyền các tập dữ liệu lớn qua phương tiện lưu trữ có dung lượng hạn chế, chẳng hạn như CD hoặc DVD.
Định dạng RAR cung cấp khả năng mã hóa mạnh mẽ để bảo vệ dữ liệu nhạy cảm. Lưu trữ có thể được mã hóa bằng thuật toán AES (Tiêu chuẩn mã hóa nâng cao) với khóa 128 bit hoặc 256 bit. Khi lưu trữ được mã hóa, tất cả dữ liệu tệp và siêu dữ liệu đều được bảo vệ và cần có mật khẩu để giải nén nội dung. RAR cũng hỗ trợ một thuật toán mã hóa độc quyền mới hơn có tên là RAR5, được thiết kế để an toàn hơn phương pháp AES cũ.
Một trong những tính năng nổi bật của định dạng RAR là hỗ trợ nén tệp chia nhỏ. Tính năng này cho phép chia các tệp lớn thành các phần nhỏ hơn trước khi nén, sau đó có thể được giải nén và lắp ráp lại một cách minh bạch bởi trình giải nén. Nén tệp chia nhỏ có thể hữu ích để tối ưu hóa lưu trữ hoặc truyền các tệp lớn qua các mạng có băng thông hạn chế hoặc kết nối không liên tục.
Ngoài khả năng nén và lưu trữ, RAR còn hỗ trợ một số tính năng nâng cao, chẳng hạn như bình luận lưu trữ, danh sách tệp được bảo vệ bằng mật khẩu và xác minh tính xác thực bằng chữ ký số. Bình luận lưu trữ cho phép người dùng đính kèm văn bản mô tả vào lưu trữ, có thể được sử dụng để cung cấp thêm ngữ cảnh hoặc hướng dẫn để giải nén nội dung. Danh sách tệp được bảo vệ bằng mật khẩu giữ ẩn tên của các tệp được mã hóa cho đến khi cung cấp đúng mật khẩu. Xác minh chữ ký số cho phép người dùng đảm bảo rằng lưu trữ có nguồn gốc từ nguồn đáng tin cậy và không bị giả mạo.
Mặc dù định dạng RAR mang lại nhiều lợi ích về hiệu quả nén, bảo vệ dữ liệu và tính năng phong phú, nhưng nó cũng có một số nhược điểm. Đáng kể nhất trong số đó là RAR là một định dạng độc quyền và các triển khai trình nén và giải nén chính thức là nguồn đóng. Điều này có thể hạn chế khả năng tương tác và khiến các nhà phát triển bên thứ ba khó tạo ra các công cụ tương thích hơn. Ngoài ra, một số tính năng nâng cao hơn của RAR, chẳng hạn như thuật toán mã hóa RAR5, có thể không được tất cả các trình giải nén hỗ trợ.
Bất chấp những hạn chế này, RAR vẫn là một định dạng lưu trữ được sử dụng rộng rãi và được hỗ trợ tốt, đặc biệt là trên các hệ thống Windows. Khả năng nén hiệu quả, phục hồi lỗi mạnh mẽ và các tính năng mã hóa mạnh mẽ của nó khiến RAR trở thành lựa chọn vững chắc để lưu trữ và bảo vệ dữ liệu quan trọng. Với việc sử dụng đúng các bản ghi phục hồi, lưu trữ nhiều ổ đĩa và sao lưu thường xuyên, lưu trữ RAR có thể cung cấp khả năng lưu trữ lâu dài đáng tin cậy cho các tệp và tập dữ liệu quan trọng.
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.
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 và 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.
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…” và 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à 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).
LZ4 ưu tiên tốc độ tuyệt đối với tỷ lệ vừa phải. Xem trang dự án và đị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).
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.
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).
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.
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.
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.
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.
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.
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.
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.
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à 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.
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.
Để 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.