BZIP2 আর্কাইভ (.bz2)
Bzip2 স্ট্যান্ডার্ডBzip2 (BZ2) হলো জুলিয়ান সেওয়ার্ড কর্তৃক তৈরিকৃত একটি ক্লাসিক প্যাটেন্ট-মুক্ত ইউনিক্সকম্প্রেশন ইউটিলিটি এবং ফাইল ফরম্যাট, যা ক্লাসিক Gzip-এর তুলনায় উল্লেখযোগ্যভাবে ভালো কম্প্রেশন অর্জনের জন্য বারোজ-হুইলার ট্রান্সফর্ম ব্যবহার করে।
ইনস্পেক্ট ও মেটাডেটা
অপারেটিং সিস্টেম এবং ফাইল অ্যানালাইজারগুলো শুরুর বাইনারি বাইট সিকোয়েন্স পরীক্ষা করে BZ2 ফাইল শনাক্ত করে:
বাইট-লেভেল হেডার সিগনেচার (ম্যাজিক বাইটস)
অপারেটিং সিস্টেম এবং ফাইল অ্যানালাইজারগুলো শুরুর বাইনারি বাইট সিকোয়েন্স পরীক্ষা করে BZ2 ফাইল শনাক্ত করে:
হেক্স সিগনেচার (অফসেট 0):
42 5A 68ASCII রিপ্রেজেন্টেশন: BZh
স্ট্যান্ডার্ডাইজেশন: Bzip2 Open Source Standard
প্রযুক্তিগত বৈশিষ্ট্য
| কন্টেইনার আর্কিটেকচার | Stream header ('BZh' + block size digit 1-9) followed by compressed data blocks and 32-bit CRC |
| কম্প্রেশন | Burrows-Wheeler Transform (BWT), Move-to-Front (MTF) transform, and Huffman coding |
| বাইট এন্ডিয়াননেস | Big-Endian bitstream framing |
| কালার স্পেস | N/A (Byte Compression Stream) |
| চ্যানেল ও কাঠামো | Single-file compressed byte stream |
| সর্বোচ্চ মাত্রা | Unbounded stream length (supports arbitrary file sizes) |
| স্বচ্ছতা | 100% bit-exact lossless data preservation |
| স্ট্রিমিং ও প্রোগ্রেসিভ | Sequential block-by-block streaming with independent per-block CRC checksums |
টেকনিক্যাল তুলনা ম্যাট্রিক্স: BZ2 বনাম প্রতিযোগীগণ
| প্রযুক্তিগত বৈশিষ্ট্য | BZ2 (বর্তমান) | GZ | XZ | ZSTD |
|---|---|---|---|---|
| কোর অ্যালগরিদম | বারোজ-হুইলার ট্রান্সফর্ম (BWT) | Deflate (LZ77 + হাফম্যান) | LZMA / LZMA2 | ফাইনাইট স্টেট এন্ট্রপি + LZ77 |
| Gzip-এর সাথে কম্প্রেশনের তুলনা | Gzip-এর চেয়ে ১০% - ২০% ছোট | বেসলাইন স্ট্যান্ডার্ড | Gzip-এর চেয়ে ২০% - ৩০% ছোট | Gzip-এর চেয়ে ১০% - ২০% ছোট |
| ডিকম্প্রেশনের গতি | ধীর (~৩০-৫০ MB/s) | দ্রুত (~৩০০ MB/s) | মাঝারি (~১০০ MB/s) | অত্যন্ত দ্রুত (>১.৫ GB/s) |
| ব্লক চেকসাম | প্রতি ব্লকে ৩২-বিট CRC | সিঙ্গেল স্ট্রিম CRC32 | স্ট্রিম CRC64 | স্ট্রিম xxHash64 |
সাধারণ করাপশন মোড এবং হেক্স রিকভারি গাইড
'bzip2: Data integrity error when decompressing' ত্রুটির কারণে এক্সট্রাকশন বন্ধ হয়ে যায়।
মূল কারণ: কম্প্রেসড ব্লকে ফ্লিপ হওয়া বিটের কারণে BWT ইনভার্স পারমুটেশন ম্যাট্রিক্স CRC32 ভ্যালিডেশনে ব্যর্থ হয়।
পুনরুদ্ধার: ক্ষতিগ্রস্ত খাতের চারপাশের অক্ষত ব্লকগুলো উদ্ধার করতে 'bzip2recover' ইউটিলিটি ব্যবহার করুন।
নিরাপত্তা বিশ্লেষণ ও পার্সার অ্যাটাক ভেক্টর
Bzip2 ইমপ্লিমেন্টেশনে জটিল বিটস্ট্রিম সর্টিং এবং হাফম্যান টেবিল পার্সিং জড়িত থাকে যা ঐতিহাসিকভাবে পূর্ণসংখ্যা ওভারফ্লো ত্রুটির শিকার হয়েছে।
পরিচিত অ্যাটাক ভেক্টর
- BWT সর্টিং অ্যারে এলোকেশনে পূর্ণসংখ্যা ওভারফ্লো (যেমন: CVE-2016-3189)।
- হাফম্যান ডিকোডিং টেবিল অ্যাসেম্বলির সময় বাউন্ডসের বাইরে রাইট (Out-of-bounds write)।
- খারাপ ইনপুট প্যাটার্নের মাধ্যমে ডিনায়াল অফ সার্ভিস (DoS), যা সবচেয়ে খারাপ ক্ষেত্রে দ্বিঘাত BWT সর্টিং সময়ের সৃষ্টি করে।
প্রতিরক্ষামূলক সেরা অনুশীলন:
ঐতিহাসিক উৎপত্তি ও মাইলফলক
প্রধান সুবিধাসমূহ ও গুণাবলী
- সোর্স কোড টারবল, সিস্টেম লগ এবং টেক্সট ডাটাবেসে ক্লাসিক Gzip-এর তুলনায় ধারাবাহিকভাবে ১০% থেকে ২০% ভালো পারফর্ম করে।
- স্বাধীন ব্লক আর্কিটেকচার (১০০কে থেকে ৯০০কে) শক্তিশালী ইন্টিগ্রিটি চেকিংয়ের জন্য প্রতি ব্লকে ৩২-বিট CRC চেকসাম অন্তর্ভুক্ত করে।
- সমস্ত লিনাক্স, বিএসডি এবং ম্যাকওএস কমান্ড-লাইন ডিস্ট্রিবিউশনে সার্বজনীন নেটিভ লভ্যতা।
কারিগরি সীমাবদ্ধতা ও অসুবিধা
- Zstandard-এর মতো আধুনিক অ্যালগরিদমের তুলনায় কম্প্রেশন এবং ডিকম্প্রেশনের গতি উল্লেখযোগ্যভাবে ধীর।
- শুধুমাত্র একক-ফাইল কম্প্রেশন: একাধিক ফাইল বা ডিরেক্টরি প্যাকেজ করার জন্য TAR (.tar.bz2)-এর সাথে জোড়া লাগাতে হয়।
- Gzip বা Zstd-এর তুলনায় ডিকম্প্রেশনের সময় বেশি CPU ব্যবহার করে।
আকর্ষণীয় কারিগরি তথ্য
- 'BZh' ম্যাজিক বাইটগুলোর অর্থ হলো 'Burrows-Wheeler Zip Huffman', যার পরে কিলোকাবাইটের শতকে ব্লক সাইজ নির্দেশক একটি অঙ্ক ('১' থেকে '৯') থাকে (যেমন: 'BZh9' = ৯০০ KB)।
- লিনাক্স কার্নেল সোর্স কোড .xz-এ স্থানান্তরিত হওয়ার আগে এক দশকেরও বেশি সময় ধরে একচেটিয়াভাবে .tar.bz2 ফরম্যাটে বিতরণ করা হয়েছিল।
- বারোজ-হুইলার ট্রান্সফর্ম সরাসরি ডেটা কম্প্রেশন করে না; এটি অক্ষরের ক্রম এমনভাবে পরিবর্তন করে যাতে একই অক্ষরগুলো একসাথে জমাট বাঁধে, যা হাফম্যান কোডিংয়ের মাধ্যমে খুব সহজেই কম্প্রেশনের উপযোগী করে তোলে।
সচরাচর জিজ্ঞাসಿತ টেকনিক্যাল প্রশ্নাবলি
.gz এবং .bz2-এর মধ্যে পার্থক্য কী?
.bz2 ফাইলটিকে .gz-এর চেয়ে ছোট আকারে রূপান্তর করতে Burrows-Wheeler ট্রান্সফর্ম ব্যবহার করে, তবে এটি কমপ্রেস এবং ডিকম্প্রেস করতে বেশি সময় নেয়।
bzip2-এ 'bzip2recover' কমান্ড থাকে কেন?
যেহেতু bzip2 স্বাধীন ৯০০ কেবি ব্লকে ডেটা কমপ্রেস করে, প্রতিটির নিজস্ব CRC থাকে, তাই ফাইলের কিছু অংশ নষ্ট হয়ে গেলেও bzip2recover অক্ষত ব্লকগুলি এক্সট্র্যাক্ট করতে পারে।
কীভাবে আমি একটি .tar.bz2 ফাইল এক্সট্র্যাক্ট করব?
কম্যান্ড-লাইন টুল না চালিয়ে আপনি সরাসরি আপনার ওয়েব ব্রাউজারে File2File.app দিয়ে .tar.bz2 ফাইল আনপ্যাক করতে পারেন।