Phần mở rộng tệp .BZ2
Các tệp có phần mở rộng .BZ2 được nén bằng thuật toán BZIP2. Công cụ mã nguồn mở và miễn phí này do Julian Seward phát triển, đạt được tỷ lệ nén ấn tượng, khiến nó trở nên lý tưởng để thu nhỏ các tệp hoặc bộ dữ liệu lớn. Không giống như các định dạng lưu trữ như ZIP , BZIP2 chỉ nén các tệp đơn lẻ. Rất may, việc tạo và giải nén tệp BZ2 rất đơn giản với hầu hết các trình lưu trữ tệp hỗ trợ định dạng. Hiệu quả của BZIP2 trong cả việc nén và giải nén đã khiến nó trở thành lựa chọn phổ biến để phân phối phần mềm, sao lưu dữ liệu và truyền internet.
Giới thiệu về kho lưu trữ BZIP2
Tương tự như GZIP , BZ2 đóng vai trò là một trình nén dữ liệu nhưng nó thiếu tính linh hoạt của một trình lưu trữ như TAR hoặc ZIP. Không giống như các định dạng này, BZIP2 không hỗ trợ nén nhiều tệp vào một kho lưu trữ duy nhất cũng như không cung cấp các tính năng mã hóa hoặc chia tách kho lưu trữ. Theo truyền thống UNIX, việc lưu trữ thường được xử lý riêng biệt, với BZIP2 chỉ được sử dụng để nén. Tuy nhiên, việc giải nén bằng BZIP2 có hiệu quả rõ rệt, đặc biệt so với tốc độ nén chậm hơn của nó. Để giải quyết sự mất cân bằng này, một phiên bản sửa đổi có tên PBZIP2 đã xuất hiện vào năm 2003, tận dụng tính năng đa luồng để cải thiện đáng kể thời gian nén trên các hệ thống đa CPU và đa lõi hiện đại.
Thông tin lịch sử định dạng tệp lưu trữ .BZ2
Định dạng tệp .BZ2, được liên kết với nén BZIP2, có nguồn gốc từ những nỗ lực phát triển của Julian Seward vào cuối những năm 1990 trong cộng đồng UNIX. Trong những năm qua, thuật toán này đã trải qua nhiều lần chuyển đổi trong quá trình bảo trì, trong đó Micah Snyder đảm nhận vai trò người bảo trì vào tháng 6 năm 2021. Cùng với sự phát triển này, các sửa đổi như PBZIP2 đã xuất hiện, tận dụng khả năng đa luồng để nâng cao tốc độ nén trên nhiều CPU hiện đại. và các hệ thống đa lõi. Bất chấp những tiến bộ này, các nguyên tắc cốt lõi của định dạng .BZ2 vẫn dựa trên việc sử dụng hiệu quả phép biến đổi Burrows-Wheeler, biến đổi chuyển về phía trước và kỹ thuật mã hóa Huffman.
Cấu trúc của kho lưu trữ BZIP2
BZIP2 sử dụng tính năng nén dựa trên khối, thường nén dữ liệu theo các khối có kích thước từ 100 đến 900 kB. Nó sử dụng phép biến đổi Burrows–Wheeler để chuyển đổi các chuỗi ký tự lặp đi lặp lại thành các chuỗi gồm các chữ cái giống hệt nhau, tiếp theo là phép biến đổi chuyển về phía trước và mã hóa Huffman. Đáng chú ý là người tiền nhiệm của nó, bzip, đã sử dụng mã hóa số học thay vì Huffman để nén.
Phương pháp nén BZIP2
Thật không may, BZIP2 thiếu các kỹ thuật nén đa dạng được tìm thấy trong một số đối tác của nó. Thay vào đó, nó dựa vào một cách tiếp cận đơn giản và tỉ mỉ để nén dữ liệu. Kỹ thuật này được đặc trưng bởi:
- Sắp xếp khối: BZIP2 chia dữ liệu thành các khối nhỏ hơn để nén riêng lẻ.
- Biến đổi Burrows-Wheeler: Bước này sắp xếp lại dữ liệu trong mỗi khối để cải thiện hiệu quả nén bằng cách xác định các mẫu lặp lại.
- Di chuyển lùi: Thuật toán sau đó lặp lại dữ liệu đã chuyển đổi ngược lại, áp dụng mã hóa Huffman để nén thêm.
- Mã hóa độ dài thời gian chạy: Kỹ thuật này xác định và mã hóa các ký tự lặp lại trong khối dữ liệu để tiết kiệm thêm dung lượng.
Hoạt động được hỗ trợ lưu trữ BZIP2
Aspose.ZIP tạo điều kiện cho một loạt hoạt động trên kho lưu trữ tệp .BZ2, bao gồm trích xuất, nén, đóng gói tệp, hợp nhất và chuyển đổi lưu trữ. Người dùng có thể trích xuất liền mạch dữ liệu từ kho lưu trữ .BZ2, nén tệp, hợp nhất các kho lưu trữ và chuyển đổi giữa các định dạng lưu trữ khác nhau một cách dễ dàng. Ngoài ra, Aspose.ZIP hỗ trợ chia nhỏ các kho lưu trữ .BZ2 lớn thành nhiều tập để cải thiện khả năng quản lý và hiệu quả lưu trữ.
BZIP2 - Cấu trúc bên trong
Mặc dù không có thông số kỹ thuật chính thức cho bzip2, nhưng một thông số kỹ thuật không chính thức đã được rút ra thông qua kỹ thuật đảo ngược quá trình triển khai tham chiếu. Về bản chất, luồng .bz2 bắt đầu bằng tiêu đề 4 byte ngắn gọn, tiếp theo là số lượng khối nén bất kỳ, được kết thúc liền mạch bằng điểm đánh dấu cuối luồng có tổng kiểm tra CRC 32 bit cho toàn bộ luồng văn bản gốc đã xử lý. Đáng chú ý, các khối nén được căn chỉnh theo mức bit mà không cần thêm phần đệm. Cấu trúc hợp lý này nhấn mạnh tính hiệu quả và đơn giản của định dạng nén bzip2.
Sau khi trải qua quá trình nén RLE ở giai đoạn đầu (xem ở trên), độ dài tối đa của văn bản không nén có thể vừa với một khối 900 KB duy nhất trong bzip2 lên tới khoảng 46 MB (45.899.236 byte). Tình huống này xảy ra khi toàn bộ văn bản không nén bao gồm toàn bộ các giá trị lặp lại (kết quả là tệp .bz2 chỉ có 46 byte). Ngay cả các tệp nhỏ hơn, khoảng 40 byte, cũng có thể đạt được bằng cách sử dụng dữ liệu đầu vào bao gồm toàn bộ giá trị 251, dẫn đến tỷ lệ nén đáng kinh ngạc là 1.147.480,9:1. Thành tích đáng chú ý này cho thấy tính hiệu quả và tính linh hoạt đáng kinh ngạc của thuật toán nén bzip2.
Mức độ phổ biến của việc lưu trữ và hỗ trợ BZIP2
Các kho lưu trữ .BZ2, mặc dù không phổ biến như các định dạng .ZIP hoặc .7z , vẫn tìm thấy tiện ích trong các ứng dụng cụ thể, đặc biệt là trong môi trường Unix và Linux. Chúng cung cấp khả năng nén mạnh mẽ và được hỗ trợ tốt trên nhiều hệ điều hành và công cụ phần mềm khác nhau. Bất chấp vị thế thích hợp của chúng, kho lưu trữ BZIP2 vẫn là lựa chọn đáng tin cậy để đóng gói phân phối phần mềm và sao lưu dữ liệu. Hỗ trợ cho các tệp .BZ2 rất phổ biến, với nhiều công cụ lưu trữ và ngôn ngữ tập lệnh cung cấp chức năng tích hợp để tạo và giải nén chúng. Tuy nhiên, khi các thuật toán nén mới hơn xuất hiện, mức độ phổ biến và cách sử dụng kho lưu trữ BZIP2 có thể tiếp tục phát triển.
Ví dụ về việc sử dụng BZIP2
Aspose.ZIP đưa khả năng nén Bzip2 lên một tầm cao mới. Bằng cách tận dụng sức mạnh xử lý song song của CPU, Aspose.ZIP có thể phân chia khối lượng công việc nén trên nhiều lõi. Điều này có nghĩa là thời gian nén nhanh hơn đáng kể, đặc biệt đối với các tập dữ liệu lớn. Kích hoạt tính năng nén song song với Aspose.ZIP dễ dàng như đặt thuộc tính CompressionThreads thành giá trị lớn hơn 1
Parallel Compression for BZ2 Files
This simple configuration unlocks the full potential of your multi-core processor, dramatically accelerating your Bzip2 compression tasks.
using (Bzip2Archive archive = new Bzip2Archive())
{
archive.SetSource("data.bin");
archive.Save("result.bz2", new Bzip2SaveOptions() { CompressionThreads = Environment.ProcessorCount });
}
Bzip2SaveOptions.CompressionThreads property
This setting controls the number of compression threads. When set to a value greater than 1, multithreading compression is activated. Read more .
public int CompressionThreads { get; set; }
Thông tin bổ sung về kho lưu trữ BZIP2
- Tổ chức BZIP
- Bzip2Archive phương thức, lớp và hàm tạo
- Tạo Tar.BZ2 trực tuyến
Mọi người đã hỏi
1. BZIP2 có an toàn không? Nó có thể mã hóa tập tin không?
Điều này giải quyết mối quan tâm chung về bảo mật dữ liệu. Điều quan trọng cần làm rõ là bản thân BZIP2 không cung cấp tính năng mã hóa. Người dùng có thể cần một công cụ riêng để mã hóa tệp của họ trước khi nén chúng bằng BZIP2. Ví dụ: mật khẩu mạnh có thể được tạo cho các kho lưu trữ đã tạo trước đó bằng các công cụ mã hóa riêng biệt.
2. Ưu điểm và hạn chế của việc sử dụng nén BZIP2 là gì?
Ưu điểm chính của BZIP2 là khả năng đạt được tỷ lệ nén cao, nhưng nó có thể đòi hỏi nhiều tài nguyên và thời gian tính toán hơn so với các thuật toán khác. Ngoài ra, kho lưu trữ BZIP2 không hỗ trợ lưu trữ nhiều tệp trong một tệp nén duy nhất .
3. Sự khác biệt giữa BZIP2 và các định dạng lưu trữ như ZIP hoặc TAR là gì?
Điều này rất quan trọng vì BZIP2 chỉ nén các tệp đơn lẻ, không giống như ZIP và TAR có thể lưu trữ nhiều tệp vào một gói duy nhất. Để giải quyết hạn chế này, bạn có thể sử dụng API Aspose.ZIP để thêm tệp vào kho lưu trữ ZIP mà không cần nén .