Định dạng lưu trữ ISO, còn được gọi là ISO 9660, là một tiêu chuẩn hệ thống tệp do Tổ chức Tiêu chuẩn hóa Quốc tế (ISO) công bố vào năm 1988. Định dạng này được thiết kế như một hệ thống tệp đa nền tảng cho phương tiện đĩa quang, chẳng hạn như CD-ROM. Mục tiêu là cung cấp một phương pháp thống nhất cho các hệ điều hành khác nhau để đọc dữ liệu từ đĩa quang, đảm bảo khả năng tương tác và tương thích.
ISO 9660 xác định một cấu trúc hệ thống tệp phân cấp, tương tự như các hệ thống tệp được sử dụng bởi hầu hết các hệ điều hành. Định dạng này sắp xếp dữ liệu thành các thư mục và tệp, trong đó mỗi thư mục có thể chứa các thư mục con và tệp. Tiêu chuẩn này chỉ định định dạng của các mô tả ổ đĩa và thư mục, cũng như bảng đường dẫn, được sử dụng để truy cập nhanh vào các thư mục.
Một trong những tính năng chính của định dạng ISO 9660 là tính đơn giản và khả năng tương thích của định dạng này. Tiêu chuẩn này áp đặt các hạn chế đối với tên tệp, cấu trúc thư mục và siêu dữ liệu để đảm bảo rằng các đĩa có thể được đọc bởi nhiều hệ thống khác nhau. Tên tệp bị giới hạn ở 8 ký tự, theo sau là phần mở rộng 3 ký tự (định dạng 8.3) và chỉ có thể chứa các chữ cái viết hoa, chữ số và dấu gạch dưới. Tên thư mục cũng bị hạn chế tương tự, với độ sâu tối đa là 8 cấp.
Để chứa các tên tệp dài hơn và siêu dữ liệu bổ sung, tiêu chuẩn ISO 9660 đã được mở rộng thông qua nhiều thông số kỹ thuật khác nhau. Một trong những phần mở rộng như vậy là Joliet, được Microsoft giới thiệu vào năm 1995. Joliet cho phép sử dụng tên tệp dài hơn (tối đa 64 ký tự Unicode) và hỗ trợ phân biệt chữ hoa chữ thường. Phần mở rộng này đạt được điều này bằng cách bao gồm một tập hợp các bản ghi thư mục bổ sung sử dụng mã hóa UCS-2, được đọc bởi các hệ thống hỗ trợ phần mở rộng Joliet.
Một phần mở rộng đáng chú ý khác của ISO 9660 là Rock Ridge, được phát triển cho các hệ thống UNIX. Rock Ridge bổ sung ngữ nghĩa hệ thống tệp POSIX, chẳng hạn như quyền tệp, quyền sở hữu và liên kết tượng trưng, vào định dạng ISO 9660. Phần mở rộng này cho phép bảo toàn các thuộc tính tệp cụ thể của UNIX khi tạo ảnh ISO từ các hệ thống tệp UNIX.
Định dạng ISO 9660 chia đĩa thành các khối logic, mỗi khối thường có kích thước 2.048 byte. 16 khối đầu tiên được dành riêng cho mục đích sử dụng của hệ thống và chứa các Mô tả Ổ đĩa, cung cấp thông tin về cấu trúc và nội dung của đĩa. Mô tả Ổ đĩa Chính là bắt buộc và bao gồm các chi tiết như định danh ổ đĩa, kích thước của các khối logic và bản ghi thư mục gốc.
Tiếp theo các Mô tả Ổ đĩa, Bảng Đường dẫn được lưu trữ trên đĩa. Bảng Đường dẫn chứa thông tin về vị trí của từng thư mục trên đĩa, cho phép duyệt nhanh hệ thống phân cấp thư mục. Bảng này bao gồm Bảng Đường dẫn L (Little-Endian) và Bảng Đường dẫn M (Big-Endian) để hỗ trợ các thứ tự byte khác nhau được sử dụng bởi các hệ thống khác nhau.
Các thư mục và tệp được lưu trữ trong các khối tiếp theo của đĩa. Mỗi thư mục được biểu diễn bằng Bản ghi Thư mục, chứa thông tin như tên thư mục, thư mục cha của thư mục đó và vị trí của các tệp và thư mục con được liên kết. Các tệp được lưu trữ dưới dạng các chuỗi khối logic liên tiếp, với vị trí và kích thước của các tệp được chỉ định trong bản ghi Định danh Tệp tương ứng trong thư mục.
Khi tạo ảnh ISO, hệ thống tệp trước tiên được sắp xếp theo các yêu cầu của tiêu chuẩn ISO 9660. Điều này bao gồm đảm bảo rằng tên tệp và thư mục tuân thủ định dạng 8.3, giới hạn độ sâu của thư mục và chuyển đổi tên tệp thành chữ hoa. Sau khi hệ thống tệp được chuẩn bị, hệ thống tệp sẽ được ghi vào tệp ảnh có phần mở rộng `.iso`, sau đó có thể được ghi vào đĩa quang hoặc sử dụng làm ảnh đĩa ảo.
Để đọc đĩa được định dạng ISO 9660, hệ điều hành hoặc ứng dụng phần mềm chuyên dụng sẽ bắt đầu bằng cách kiểm tra các Mô tả Ổ đĩa để xác định cấu trúc và đặc điểm của đĩa. Sau đó, hệ thống sẽ sử dụng Bảng Đường dẫn và Bản ghi Thư mục để điều hướng hệ thống phân cấp tệp và xác định vị trí các tệp hoặc thư mục cụ thể. Khi truy cập tệp, hệ thống sẽ đọc các khối logic thích hợp từ đĩa dựa trên thông tin được cung cấp trong bản ghi Định danh Tệp.
Định dạng ISO 9660 đã được áp dụng rộng rãi và vẫn thường được sử dụng để phân phối phần mềm, nội dung đa phương tiện và dữ liệu lưu trữ trên đĩa quang. Tính đơn giản, khả năng tương thích và độ bền của định dạng này đã góp phần vào tuổi thọ của định dạng này, ngay cả khi các định dạng đĩa quang và hệ thống tệp mới hơn đã xuất hiện.
Mặc dù đã cũ, nhưng tiêu chuẩn ISO 9660 vẫn có liên quan trong ngành máy tính hiện đại. Nhiều ứng dụng phần mềm và hệ điều hành, bao gồm Windows, macOS và Linux, vẫn hỗ trợ định dạng này theo mặc định. Ngoài ra, ảnh ISO thường được sử dụng để phân phối các tệp cài đặt hệ điều hành, các gói phần mềm và ảnh đĩa máy ảo, vì các ảnh này cung cấp một phương pháp thuận tiện và độc lập với nền tảng để lưu trữ và truyền dữ liệu.
Tóm lại, định dạng ISO 9660 đã đóng một vai trò quan trọng trong việc chuẩn hóa cấu trúc hệ thống tệp cho đĩa quang, cho phép khả năng tương thích đa nền tảng và tạo điều kiện thuận lợi cho việc phân phối nội dung kỹ thuật số. Các phần mở rộng của định dạng này, chẳng hạn như Joliet và Rock Ridge, đã bổ sung hỗ trợ cho các tên tệp dài hơn, siêu dữ liệu bổ sung và các thuộc tính cụ thể của UNIX. Mặc dù đĩa quang phần lớn đã được thay thế bằng các phương tiện lưu trữ khác và các phương pháp phân phối dựa trên mạng, nhưng định dạng ISO 9660 vẫn là một tiêu chuẩn đáng tin cậy và được hỗ trợ rộng rãi để lưu trữ và trao đổi dữ liệu.
Khi công nghệ tiếp tục phát triển, định dạng ISO 9660 cuối cùng có thể được thay thế bằng các hệ thống tệp mới hơn, tiên tiến hơn được thiết kế cho đĩa quang dung lượng cao hoặc các phương tiện lưu trữ khác. Tuy nhiên, tác động của định dạng này đối với lịch sử máy tính và vai trò của định dạng này trong việc thiết lập một phương pháp tiếp cận chuẩn hóa để trao đổi dữ liệu đa nền tảng sẽ không bị lãng quên. Định dạng ISO 9660 đóng vai trò như một minh chứng cho tầm quan trọng của khả năng tương tác và những lợi ích của sự hợp tác trong toàn ngành trong việc phát triển và áp dụng các tiêu chuẩn.
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.