ארכיון BZIP2 (.bz2)

תקן תקן

Bzip2 (BZ2) הוא כלי דחיסה ופורמט קבצים קלאסי של יוניקס, שאינו מוגן בפטנט. הוא נוצר על ידי ג'וליאן סיוורד (Julian Seward) ומשתמש בהתמרת בורווס-ווילר (Burrows-Wheeler) כדי להשיג דחיסה טובה יותר במידה ניכרת מזו של Gzip הקלאסי.

בדיקה ומטא-נתונים

מערכות הפעלה ומנתחי קבצים מזהים קבצי BZ2 על ידי בדיקת רצף הבייטים הבינארי הראשוני:

בחר או גרור קבצים לכאן

פרטי - הקבצים לעולם אינם עוזבים את המכשיר שלך

או הדבק Ctrl+V
הבטחת פרטיות ללא העברת נתונים ברשת: 0 בייט הועלו לשרתים חיצוניים. כל העיבוד התבצע באופן מקומי בארגז החול של הדפדפן שלך.

חתימת כותרת ברמת הבייט (Magic Bytes)

מערכות הפעלה ומנתחי קבצים מזהים קבצי BZ2 על ידי בדיקת רצף הבייטים הבינארי הראשוני:

חתימת HEX (היסט 0):

42 5A 68

ייצוג ASCII: BZh

תקינה: תקן קוד פתוח של Bzip2

מפרט טכני

מבנה המכולהכותרת זרם (BZh ואחריה ספרה לגודל בלוק 1-9), ולאחריה בלוקי נתונים דחוסים וסכום ביקורת של 32 סיביות
דחיסההתמרת Burrows-Wheeler (BWT), התמרת Move-to-Front (MTF) וקידוד Huffman
סדר בתים (Endianness)מסגור זרם סיביות Big-Endian
מרחבי צבעלא רלוונטי (זרם דחיסת בתים)
ערוצים ומבנהזרם בתים דחוס של קובץ יחיד
ממדים מרבייםאורך זרם בלתי מוגבל (תומך בקבצים בכל גודל)
שקיפותשימור נתונים ללא אובדן, בדיוק של 100% ברמת הסיביות
הזרמה ופרוגרסיביותהזרמה רציפה, בלוק אחר בלוק, עם סכומי ביקורת CRC נפרדים לכל בלוק

מטריצת השוואה טכנית: BZ2 מול מתחרים

תכונה טכניתBZ2 (נוכחי)GZXZZSTD
אלגוריתם הליבההתמרת בורווס-ווילר (BWT)Deflate (LZ77 + האפמן)LZMA / LZMA2אנטרופיית מצבים סופיים + LZ77
דחיסה לעומת Gzipקטנים ב-10% עד 20% מקובצי Gzipתקן בסיסקטנים ב-20% עד 30% מקובצי Gzipקטנים ב-10% עד 20% מקובצי Gzip
מהירות פריסהאיטי (~30-50 מגה-בייט לשנייה)מהיר (~300 מגה-בייט לשנייה)בינוני (~100 מגה-בייט לשנייה)מהיר במיוחד (>1.5 גיגה-בייט לשנייה)
סכומי ביקורת של בלוקיםCRC של 32 סיביות לכל בלוקCRC32 של זרם יחידCRC64 של זרםxxHash64 של זרם

מצבי השחתה נפוצים ומדריך שחזור הקסדצימלי (Hex)

החילוץ מתבטל עם השגיאה 'bzip2: Data integrity error when decompressing'.

גורם שורש: סיביות הפוכות בבלוק דחוס הגורמות למטריצת התמורה ההפוכה של BWT להיכשל באימות CRC32.

שחזור: השתמש בכלי 'bzip2recover' כדי להציל בלוקים שלא ניזוקו המקיפים את המגזר הפגום.

ניתוח אבטחה ווקטורי תקיפה נגד מנתחי פורמטים (parsers)

יישומי Bzip2 כוללים מיון זרמי סיביות מורכב וניתוח טבלאות האפמן שחוו בעבר פגמי גלישת מספרים שלמים.

ווקטורי תקיפה ידועים

  • גלישת מספרים שלמים בהקצאת מערך מיון BWT (למשל CVE-2016-3189).
  • כתיבה מחוץ לגבולות במהלך הרכבת טבלת פענוח האפמן.
  • מניעת שירות באמצעות דפוסי קלט פתולוגיים הגורמים לזמני מיון BWT ריבועיים במקרה הגרוע ביותר.

שיטות מומלצות להגנה: פענח קובצי BZ2 באמצעות מפענחי WASM בטוחים לזיכרון, עם גבולות זיכרון שנאכפים בפועל.

היסטוריה ואבני דרך

2019פדריקו מֵנָה קווינטרו (Federico Mena Quintero) מוביל את תחזוקת בסיס הקוד של bzip2 במסגרת יוזמות bzip3 וקוד פתוח מודרניות.
2000שוחררה גרסה 1.0, המייצבת את פורמט bzip2 בכל הפצות לינוקס ומנהלי החבילות.
1996ג'וליאן סיוורד משחרר את bzip2 0.15 כדי להחליף את פורמט bzip המוקדם שהיו לו בעיות פטנט.

יתרונות מרכזיים

  • עולה בעקביות על Gzip הקלאסי ב-10% עד 20% בקובצי tar של קוד מקור, יומני מערכת ומסדי נתונים טקסטואליים.
  • ארכיטקטורת בלוקים עצמאית (100k עד 900k) כוללת בדיקות סכום ביקורת מסוג CRC של 32 סיביות לכל בלוק לבדיקת תקינות איתנה.
  • זמין באופן מובנה בהפצות רבות של Linux, BSD ו-macOS; הכללתו תלויה בהפצה.

מגבלות טכניות וחסרונות

  • מהירויות הדחיסה והפריסה נמוכות משמעותית בהשוואה לאלגוריתמים מודרניים כמו Zstandard.
  • דחיסה של קובץ יחיד בלבד: כדי לארוז כמה קבצים או ספריות, צריך להשתמש ב-TAR (‎.tar.bz2).
  • שימוש גבוה יותר במעבד במהלך הפריסה בהשוואה ל-Gzip או ל-Zstd.

עובדות טכניות מעניינות

  • הבייטים הקסומים 'BZh' מייצגים את 'Burrows-Wheeler Zip Huffman', ואחריהם מופיעה ספרה ('1' עד '9') המציינת את גודל הבלוק במאות קילובייט (למשל 'BZh9' = 900 קילו-בייט).
  • קוד המקור של ליבת לינוקס הופץ אך ורק בפורמט ‎.tar.bz2 במשך למעלה מ-10 שנים לפני המעבר ל-‎.xz.
  • התמרת בורווס-ווילר אינה דוחסת נתונים ישירות; היא מסדרת מחדש את התווים כך שתווים זהים מתקבצים יחד, וכך קל לדחוס אותם באמצעות קידוד האפמן.

שאלות טכניות נפוצות

מה ההבדל בין .gz ל-.bz2?

.bz2 משתמש בהתמרת Burrows-Wheeler כדי ליצור קבצים קטנים יותר מאלה שנוצרים ב-.gz, אך הדחיסה והפריסה שלו נמשכות זמן רב יותר.

מדוע ל-bzip2 יש פקודת 'bzip2recover'?

מכיוון ש-bzip2 דוחס נתונים בבלוקים עצמאיים של 900 קילו-בייט, שלכל אחד מהם יש סכום ביקורת CRC משלו, bzip2recover יכול לחלץ בלוקים שלא נפגעו גם אם חלק מהקובץ פגום.

כיצד אוכל לחלץ קובץ .tar.bz2?

ניתן לפרוס קבצי .tar.bz2 ישירות בדפדפן האינטרנט שלך באמצעות File2File.app מבלי להריץ כלי שורת פקודה.