Tệp nén BZIP2 (.bz2)

Bzip2 Tiêu chuẩn

Bzip2 (BZ2) là một tiện ích nén và định dạng tệp Unix kinh điển, không vướng bằng sáng chế, được tạo ra bởi Julian Seward. Tiện ích này sử dụng phép biến đổi Burrows-Wheeler để đạt được tỷ lệ nén chặt hơn đáng kể so với Gzip cổ điển.

Kiểm tra & Siêu dữ liệu

Các hệ điều hành và trình phân tích tệp nhận dạng tệp BZ2 bằng cách kiểm tra chuỗi byte nhị phân đầu tệp:

Chọn hoặc thả tệp vào đây

Chuyển đổi 100% riêng tư trong trình duyệt - tệp không bao giờ rời khỏi thiết bị của bạn

hoặc dán Ctrl+V
Cam kết bảo mật không truyền tải qua mạng: 0 byte được tải lên máy chủ bên ngoài. Toàn bộ quá trình xử lý diễn ra cục bộ trong hộp cát trình duyệt của bạn.

Chữ ký tiêu đề ở cấp độ Byte (Magic Bytes)

Các hệ điều hành và trình phân tích tệp nhận dạng tệp BZ2 bằng cách kiểm tra chuỗi byte nhị phân đầu tệp:

CHỮ KÝ HEX (OFFSET 0):

42 5A 68

BIỂU DIỄN ASCII: BZh

Tiêu chuẩn hóa: Bzip2 Open Source Standard

Thông số kỹ thuật

Kiến trúc ContainerStream header ('BZh' + block size digit 1-9) followed by compressed data blocks and 32-bit CRC
NénBurrows-Wheeler Transform (BWT), Move-to-Front (MTF) transform, and Huffman coding
Thứ tự byte EndiannessBig-Endian bitstream framing
Không gian màuN/A (Byte Compression Stream)
Kênh & Cấu trúcSingle-file compressed byte stream
Kích thước tối đaUnbounded stream length (supports arbitrary file sizes)
Độ trong suốt100% bit-exact lossless data preservation
Truyền phát & Tăng dầnSequential block-by-block streaming with independent per-block CRC checksums

Ma trận so sánh kỹ thuật: BZ2 so với các đối thủ

Thuộc tính kỹ thuậtBZ2 (Hiện tại)GZXZZSTD
Thuật toán cốt lõiPhép biến đổi Burrows-Wheeler (BWT)Xì hơi (LZ77 + Huffman)LZMA / LZMA2Entropy trạng thái hữu hạn + LZ77
Độ nén so với GzipNhỏ hơn Gzip từ 10% - 20%Tiêu chuẩn cơ sởNhỏ hơn Gzip từ 20% - 30%Nhỏ hơn Gzip từ 10% - 20%
Tốc độ giải nénChậm (~30-50 MB/s)Nhanh (~300 MB/s)Trung bình (~100 MB/s)Cực nhanh (>1.5 GB/s)
Tổng kiểm tra khốiCRC 32-bit trên mỗi khốiCRC32 trên một luồng đơnCRC64 trên luồngxxHash64 trên luồng

Các chế độ hỏng hóc phổ biến & Hướng dẫn khôi phục Hex

Quá trình giải nén bị hủy bỏ với thông báo 'bzip2: Data integrity error when decompressing'.

Nguyên nhân gốc rễ: Bit bị lật trong khối nén khiến ma trận hoán vị nghịch đảo BWT không vượt qua được quá trình xác thực CRC32.

Khắc phục: Sử dụng tiện ích 'bzip2recover' để cứu vớt các khối không bị hỏng xung quanh khu vực bị lỗi.

Phân tích bảo mật & Các vectơ tấn công bộ phân tích cú pháp

Các triển khai Bzip2 liên quan đến việc sắp xếp luồng bit phức tạp và phân tích cú pháp bảng Huffman từng gặp các lỗi tràn số nguyên trong quá khứ.

Các Véc-tơ Tấn công Đã biết

  • Tràn số nguyên trong việc cấp phát mảng sắp xếp BWT (ví dụ: CVE-2016-3189).
  • Ghi vượt quá giới hạn trong quá trình lắp ráp bảng giải mã Huffman.
  • Từ chối dịch vụ thông qua các mẫu đầu vào bệnh lý gây ra thời gian sắp xếp BWT bậc hai tồi tệ nhất.

Thực tiễn Tốt nhất về Phòng thủ:

Nguồn gốc lịch sử & Các cột mốc

2019Federico Mena Quintero hiện đại hóa việc duy trì cơ sở mã bzip2 theo các sáng kiến bzip3 và mã nguồn mở hiện đại.
2000Phiên bản 1.0 phát hành, ổn định định dạng bzip2 trên các bản phân phối Linux và trình quản lý gói.
1996Julian Seward phát hành bzip2 0.15 để thay thế định dạng bzip trước đó vốn vướng các vấn đề về bằng sáng chế.

Ưu điểm & Lợi ích chính

  • Luôn vượt trội hơn Gzip cổ điển từ 10% đến 20% trên các tệp tarball mã nguồn, nhật ký hệ thống và cơ sở dữ liệu văn bản.
  • Kiến trúc khối độc lập (100k đến 900k) bao gồm tổng kiểm tra CRC 32-bit trên mỗi khối để kiểm tra tính toàn vẹn mạnh mẽ.
  • Có sẵn nguyên bản trên toàn bộ các bản phân phối dòng lệnh Linux, BSD và macOS.

Hạn chế & Nhược điểm kỹ thuật

  • Tốc độ nén và giải nén chậm hơn đáng kể so với các thuật toán hiện đại như Zstandard.
  • Chỉ nén tệp đơn: yêu cầu ghép nối với TAR (.tar.bz2) để đóng gói nhiều tệp hoặc thư mục.
  • Sử dụng CPU cao hơn trong quá trình giải nén so với Gzip hoặc Zstd.

Thông tin kỹ thuật thú vị

  • Các byte nhận dạng 'BZh' viết tắt của 'Burrows-Wheeler Zip Huffman', theo sau là một chữ số (từ '1' đến '9') biểu thị kích thước khối tính bằng hàng trăm kilobyte (ví dụ: 'BZh9' = 900 KB).
  • Mã nguồn Nhân Linux được phân phối độc quyền ở định dạng .tar.bz2 trong hơn một thập kỷ trước khi chuyển sang .xz.
  • Phép biến đổi Burrows-Wheeler không nén dữ liệu trực tiếp; nó hoán vị thứ tự các ký tự để các chữ cái giống nhau tụ lại với nhau, giúp chúng dễ dàng được nén bằng mã hóa Huffman.

Các câu hỏi kỹ thuật thường gặp

Sự khác biệt giữa .gz và .bz2 là gì?

.bz2 sử dụng thuật toán biến đổi Burrows-Wheeler để đạt kích thước tệp nhỏ hơn .gz, nhưng bù lại tốn nhiều thời gian hơn để nén và giải nén.

Tại sao bzip2 lại có lệnh 'bzip2recover'?

Bởi vì bzip2 nén dữ liệu thành các khối 900 KB độc lập, mỗi khối có mã CRC riêng, nên bzip2recover có thể trích xuất các khối không bị hỏng ngay cả khi một phần của tệp gặp sự cố.

Làm cách nào để giải nén tệp .tar.bz2?

Bạn có thể giải nén các tệp .tar.bz2 trực tiếp trong trình duyệt web của mình với File2File.app mà không cần chạy các công cụ dòng lệnh phức tạp.