עודכן לאחרונה: 20 באוג, 2026

GZIP vs BZIP2 vs XZ: איזה פורמט דחיסה של לינוקס הוא הטוב ביותר?
בין אם אתם דוחסים גיבויי מסד נתונים יומיים, מסובבים יומני שרת אינטרנט מרובי גיגהבייט, או מפיצים קבצי בינאריים מקומפלים לאלפי צמתים, דחיסה היא מציאות יומיומית בניהול לינוקס.
בעת קריאה ל‑tar או עיבוד נתוני זרם דרך קלט סטנדרטי, בדרך כלל נתקלים בשלוש כלי סטנדרטיים: GZIP (.gz), BZIP2 (.bz2), ו‑XZ (.xz).
בעוד שכל שלושת הכלים שואפים לדחוס בתים גולמיים לארכיונים קומפקטיים, הם מבצעים פשרות הנדסיות שונות באופן יסודי בין יחס דחיסה, זמן ריצה של המעבד, וצריכת זיכרון. בחירת הפורמט הלא נכון יכולה לגרום לצוואר בקבוק שקט בפריסות האוטומטיות שלכם, לעכב חלונות גיבוי מתוזמנים, או לבזבז אחסון יקר לאורך זמן.
מדריך זה מפרק כיצד כל פורמט פועל מאחורי הקלעים, כיצד הם מתפקדים בעומסי עבודה מציאותיים, וכיצד לבחור את המתאים לתשתית שלכם.
1. פרופילים טכניים מהירים: שלושת המתמודדים
GZIP (GNU Zip)
- אלגוריתם בסיסי: DEFLATE (שילוב של LZ77 וקידוד האופמן)
- הרחבה ברירת מחדל:
.tar.gz,.tgz,.gz - תקופת שחרור: 1992 (נוצר על ידי ז’אן-לופ גיילי ומארק אדלר כחלופה ללא פטנט ל-
compress) - יתרון מרכזי: מהירות ביצוע בלתי ניתנת לתחרות ותמיכה כמעט אוניברסלית במערכת האקולוגית.
- חיסרון מרכזי: יחס דחיסה נמוך יותר בהשוואה למקודדים מודרניים סטטיסטיים ומבוססי מילון.
GZIP שימש ככלי העבודה ברירת המחדל של סביבות Unix במשך יותר משלושה עשורים. מכיוון שהאלגוריתם DEFLATE שלו פועל עם חלונות גלילה קטנים (32 ק"ב), GZIP דורש עומס זיכרון זניח הן בדחיסה והן בפירוק.
BZIP2
- אלגוריתם בסיסי: טרנספורמציית ברוז-וילר (BWT) משולבת עם טרנספורמציית Move-to-Front (MTF) וקידוד האופמן
- הרחבה ברירת מחדל:
.tar.bz2,.tbz2,.bz2 - תקופת שחרור: 1996 (נוצר על ידי ג’וליאן סיוורד)
- יתרון מרכזי: יחסי דחיסה טובים יותר על קבצי ASCII חוזרים וקבצי יומן מובנים מאשר GZIP.
- חיסרון מרכזי: איטי יותר באופן כולל, במיוחד במהלך פענוח, ובגדול הפך למיושן על ידי אלגוריתמים חדשים.
BZIP2 מעבד נתונים בחסימות נפרדות (בדרך כלל 900 ק״ב) באמצעות פרמוטציות הפיכות שמקבצות תווים דומים יחד לפני הקידוד. בעוד שהוא היה פופולרי מאוד בסוף שנות ה‑90 ובשנות ה‑2000 על ידי הקטנת גודל הקבצים לעומת GZIP, עלות החישוב שלו גבוהה יחסית.
XZ (LZMA2)
- אלגוריתם בסיסי: LZMA2 (אלגוריתם שרשרת למפל-זיב-מרקוב, משופר)
- הרחבה ברירת מחדל:
.tar.xz,.txz,.xz - תקופת שחרור: 2009 (הוצג כדי להחליף את פורמט
lzmaהישן) - יתרון מרכזי: יחסי דחיסה גבוהים במיוחד ופענוח מהיר וקל משקל.
- חיסרון מרכזי: שימוש גבוה בזיכרון RAM וזמן ריצה ממושך של CPU במהלך הדחיסה הראשונית.
XZ מנצל גדלים משתנים של מילון (לעיתים עד 32 MB או 64 MB כברירת מחדל) כדי למצוא תבניות בתים משוכפלות בחלונות נתונים רחבים הרבה יותר מאשר GZIP. זה עושה אותו יעיל באופן הרסני בצמצום קבצים גדולים ומיותרים כגון מדיות התקנת מערכת הפעלה, עצי קוד של ליבה, ותמונות קושחה.
2. מטריצת השוואת ביצועים
הטבלה למטה מסכמת את דינמיקת הביצועים המעשית של כל כלי כאשר הוא פועל עם תצורות ברירת מחדל על חומרת שרת סטנדרטית:
| מדד / ממד | GZIP (-6) | BZIP2 (-9) | XZ (-6) |
|---|---|---|---|
| יחס דחיסה | מתון (~65‑75% הפחתה) | טוב (~75-80% הפחתה) | מעולה (~80-88% הפחתה) |
| מהירות דחיסה | מהיר מאוד | איטי | מאוד איטי |
| מהירות פירוק | מהיר מאוד | איטי עד בינוני | מהיר |
| שימוש בזיכרון RAM לדחיסה | זניח (~1–2 MB) | נמוך (~8–10 MB) | גבוה (~100–700 MB+) |
| שימוש בזיכרון RAM לפירוק | זניח (< 1 MB) | נמוך (~4 MB) | בינוני (~10–65 MB) |
| הנקודה האופטימלית העיקרית | יומנים, צינורות CI/CD, זרמים בזמן אמת | תאימות ארכיונים מדור קודם | מאגרי חבילות, קבצי ISO של מערכת הפעלה, אחסון קר |
3. תובנות מדדים בעולם האמיתי
כדי להבין כיצד כלים אלה מתפקדים תחת עומס ריאלי, שקול יומן גישה גולמי של שרת בגודל 1 ג’יגהבייט וקובץ קוד מקור של תוכנה בגודל 500 מגהבייט ללא דחיסה.
תרחיש A: דחיסת קבצי יומן גדולים (טקסט של 1 ג’יגהבייט)
- GZIP: מסתיים בפחות מ‑12 שניות, ומספק ארכיון בגודל של כ‑180 מ״ב.
- BZIP2: מסתיים בכ‑45–50 שניות בקירוב, ומצמצם את הקובץ לכ‑130 מ״ב בקירוב.
- XZ: לוקח 80–90 שניות בהגדרות ברירת מחדל, ומייצר ארכיון בקירוב של 95 מ״ב.
תרחיש B: עומסי פענוח
מדד קריטי שלרוב מתעלמים ממנו הוא אסימטריה.
- GZIP מפענח ב‑2–3 שניות עם שימוש בזיכרון זעיר.
- XZ מפענח ב‑4–6 שניות. בעוד שהדחיסה הראשונית הייתה איטית, חילוץ
.xzהוא כמעט מהיר כמו חילוץ.gz. - BZIP2 דורש בערך 25–30 שניות רק כדי לפרק, מכיוון שהפיכת ה‑Burrows‑Wheeler Transform היא סימטרית חישובית לקידוד.
4. למה BZIP2 מאבד פופולריות
בתשתית מודרנית, BZIP2 מוצא את עצמו תקוע במצב ביניים מביך:
- הודחף במהירות על ידי GZIP: אם חשובה השהיית עיבוד או שימוש נמוך במעבד, GZIP מהיר משמעותית.
- הודחף בצפיפות על ידי XZ: אם חיסכון ברוחב הפס ויעילות אחסון חשובים, XZ יוצר ארכיונים קטנים משמעותית.
- הודחף במהירות הפענוח על ידי שניהם: במערכות אספקת תוכנה, לקוחות משנים קנסות מעבד מדידים בעת חילוץ קבצי
.tar.bz2בהשוואה ל‑.tar.gzאו ל‑.tar.xz.
כתוצאה מכך, הפצות לינוקס מרכזיות (כולל Debian, Arch ו‑Fedora) העבירו את הפצת החבילות הרשמית ו‑tarballs של הליבה משימוש ב‑BZIP2 לכיוון XZ (ובהמשך, Zstandard לפעולות זמן ריצה).
5. שימוש מעשי בשורת הפקודה
אינטגרציית Tar (תהליך העבודה הנפוץ ביותר)
מימושים מודרניים של GNU tar מזהים אוטומטית את פורמט הדחיסה על בסיס סיומת הקובץ, אך שימוש בדגלים מפורשים עדיין נוהג סטנדרטי:
# GZIP: Fast archive creation
tar -czvf project-backup.tar.gz /var/www/project/
# BZIP2: Legacy high-ratio archive
tar -cjvf project-backup.tar.bz2 /var/www/project/
# XZ: Maximum space savings
tar -cJvf project-backup.tar.xz /var/www/project/
# Generic extraction (tar auto-detects the format)
tar -xvf archive-name.tar.*
דחיסת קבצים עצמאית
לדחוס קבצים בודדים ללא איחוד:
# Compress keeping the original file intact (-k)
gzip -k access.log # Output: access.log.gz
bzip2 -k access.log # Output: access.log.bz2
xz -k access.log # Output: access.log.xz
# Decompress individual files
gzip -d access.log.gz
bzip2 -d access.log.bz2
xz -d access.log.xz
שימוש במערכות מרובות ליבות
בברירת מחדל, מימושים חד-חוטיים של כלים אלה משתמשים רק בליבת CPU אחת. אם אתה דוחס ארכיונים של כמה גיגהבייטים בשרתים מודרניים מרובי-ליבות, עיבוד חד-חוטי יכול לקחת שעות.
- ריבוי-חוטים ב‑XZ: תמיכה מובנית דרך
-Tאו--threads:xz -T0 -k database_dump.sql # Uses all available CPU cores - GZIP מקביל (
pigz): החלפה מיידית שמשתמשת בכל ליבות ה‑CPU לפעולות GZIP:pigz -k database_dump.sql - BZIP2 מקביל (
pbzip2): מימוש מרובה-חוטים עבור BZIP2:pbzip2 -k database_dump.sql
6. איך לבחור: מסגרת החלטה מעשית
בחר את הכלי שלך על בסיס המגבלה העיקרית של זרימת העבודה שלך:
השתמש ב‑GZIP אם:
- אתה מקים דחיסת זרם בזמן אמת או העברת רשת שבה קצב העברה הוא הגורם המגביל.
- אתה מנהל סיבוב יומנים אוטומטי (
logrotate) בשרתים בתפעול שבו יש לשמור משאבי CPU לעומסי עבודה של היישומים. - נדרשת ניידות מרבית בין מערכות משובצות ישנות ותמונות בסיס סטנדרטיות.
השתמש ב‑XZ אם:
- אתה מפרסם חבילות שחרור, בניות ליבה, תמונות בסיס של קונטיינרים, או מאגרי חבילות סטטיות שמורידים לעיתים קרובות צדדים שלישיים.
- אתה מכין ארכיונים קרים לטווח ארוך (גיבויים שבועיים/חודשיים מחוץ למקום) שבהם עלויות האחסון גוברות על זמן הדחיסה החד‑פעמי.
- אתה זקוק לקבצים קטנים, אך הצרכנים שלך עדיין דורשים הורדה מהירה וזמני חילוץ קצרים.
שמור על BZIP2 רק אם:
- אתה שומר על תאימות לאחור עם סקריפטים ישנים, שגרות שחזור גיבוי קיימות, או מכשירי תוכנה שאינם מספקים מפענח XZ.
7. שאלות נפוצות (FAQ)
ש1. איזה פורמט מספק את גודל הארכיון הקטן ביותר? XZ מייצר באופן עקבי את גודל הארכיון הקטן ביותר מבין השלושה בזכות חלונות מילון LZMA2 הגדולים שלו.
ש2. האם XZ איטי יותר מ‑GZIP בפירוק קבצים? XZ הוא רק מעט איטי יותר מ‑GZIP בפירוק, אך הוא מהיר משמעותית יותר מ‑BZIP2.
שאלה 3. האם GZIP ו‑XZ יכולים לנצל מספר ליבות CPU? XZ תומך בריבוי-תהליכים מקורי באמצעות הדגל -T0, בעוד ש‑GZIP ניתן לפרלל על פני ליבות באמצעות כלי ההחלפה pigz.
שאלה 4. למה הפצות לינוקס מפסיקות להשתמש ב‑BZIP2? הפצות הפחיתו משמעותית את השימוש ב‑BZIP2 מכיוון ש‑XZ דוחס לקבצים קטנים יותר ומפענח מהר יותר, בעוד ש‑GZIP נשאר מהיר לפעולות מהירות.
שאלה 5. האם רמת דחיסה גבוהה כמו -9 עושה הבדל משמעותי? הגדרת הרמה -9 מביאה רק להפחתת גודל של 1% עד 3% בממוצע, בעוד שהיא מגבירה משמעותית את צריכת מחזורי ה‑CPU ואת עומס הזיכרון.