aspose.info
HE

רוכסן

עודכן

מהו קובץ ZIP?

קובץ עם סיומת .zip הוא ארכיון שיכול להכיל קבצים או ספריות אחד או יותר. ניתן להחיל דחיסה בארכיון על הקבצים הכלולים על מנת להקטין את גודל קובץ ה-ZIP. פורמט קובץ ZIP פורסם כבר בפברואר 1989 על ידי פיל כץ לצורך השגת ארכיון של קבצים ותיקיות. הפורמט נעשה חלק מתוכנית השירות PKZIP, שנוצרה על ידי PKWARE, Inc. מיד לאחר הזמינות של מפרטים זמינים, חברות רבות הפכו את פורמט קובץ ה-ZIP לחלק מכלי התוכנה שלהם, כולל Microsoft (מאז Windows 7), Apple (Mac OS X) ועוד רבים אחרים.

היסטוריה קצרה של פורמט קובץ ZIP

ההיסטוריה של פורמט קובץ ה-ZIP מתוארכת למקרה של חבילת חוק שהונחה על ידי System Enhancement Associates (SEA) נגד PKWARE על השימוש בכלי השירות שלו ב-ARC ללא הרשאות לסימן המסחרי שלו ולזכויות היוצרים של מראה המוצר וממשק המשתמש. לפני כן, פיל כץ, שכתב את קוד המקור של SEA ושחרר את PKXARC, מחלץ ARC, ו-PKARC, מדחס קבצים, בתור תוכנה חינמית עבור מערכות מבוססות MS-DOS. כשהפסידה בתביעה, PKWARE לא יכלה להשתמש בכל מה שקשור ל-ARC יותר. כאן נוצרה יצירת דחיסת קבצים חדשה, בשם ZIP שנעשתה חלק משירותי PKZIP ב-PKWARE, Inc.

כץ פרסם את מפרטי פורמט קובץ ה-ZIP לרשות הציבור, תוך שמירה על הזכויות הקנייניות על כלי הדחיסה והחילוץ שלו, כלומר PKZIP. מערכת הדחיסה של ZIP הצליחה (ויכולה) לאחסן קבצים בתיקייה באמצעות אלגוריתם של בדיקת יתירות מחזורית של 32 סיביות (CRC) לדחיסת קובץ גדלים. שלא כמו ARC, תיקיות .ZIP כללו קובץ ספרייה שמילא את התפקיד של ספר קודים של קריפטוגרף, שמכיל את המידע הדרוש לעיבוד הקבצים הדחוסים.

שיטות דחיסה נתמכות ב-ZIP

לפי מפרטי תבנית קובץ ZIP, שיטות הדחיסה הבאות נתמכות.

  • חנות - לא מרמזת על דחיסה
  • לצמק
  • הפחתה (זה מרמז על גורמי דחיסה הנעים בין רמה 1 לרמה 4)
  • להתפוצץ
  • לרוקן את האוויר
  • Deflat64
  • BZIP2
  • LZMA (EFS)
  • WavPack
  • PPMd גרסה I, Rev 1

DEFLATE היא שיטת הדחיסה הנפוצה שהיא אלגוריתם דחיסת תאריכים ללא אובדן המשתמש בשילוב של קידוד LZ77 ו-Huffman והוא מפורט ב-RFC 1951.

מפרט פורמט קובץ ZIP

לקבצי ZIP יש יכולת לאחסן קבצים מרובים באמצעות טכניקות דחיסה שונות ובו זמנית תומכים באחסון קובץ ללא כל דחיסה. כל קובץ מאוחסן/דחוס בנפרד מה שעוזר לחלץ אותם, או להוסיף חדשים, מבלי להחיל דחיסה או דחיסה על הארכיון כולו.

פורמט קובץ ZIP הכולל

כל קובץ Zip בנוי בצורה הבאה:

פורמט קובץ ZIP
כותרת קובץ מקומית 1
נתוני קובץ 1
מתאר נתונים 1
כותרת קובץ מקומית 2
נתוני קובץ 2
מתאר נתונים 2
….
….
כותרת קובץ מקומית N
קובץ נתוני N
מתאר נתונים N
כותרת פענוח ארכיון
ארכיון רשומת נתונים נוספת
מדריך מרכזי

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

כל קובץ בארכיון ZIP מיוצג כערך בודד כאשר כל ערך מורכב מכותרת קובץ מקומית ואחריה נתוני הקובץ הדחוסים. המדריך שבסוף הארכיון מכיל את ההפניות לכל ערכי הקבצים הללו. קוראי קבצי ZIP צריכים להימנע מקריאת כותרות הקבצים המקומיות ויש לקרוא כל מיני רישום קבצים מהמדריך. ספרייה זו היא המקור היחיד לכניסות קבצים חוקיים בארכיון שכן ניתן לצרף קבצים גם לקראת סוף הארכיון. זו הסיבה שאם קורא קורא כותרות מקומיות של ארכיון ZIP מההתחלה, הוא עשוי לקרוא ערכים לא חוקיים (נמחקו), כמו גם אלה שאינם חלק מהמדריך שנמחק מהארכיון.

סדר כניסות הקבצים בספרייה המרכזית אינו חייב להיות תואם לסדר כניסות הקבצים בארכיון.

ערכי קובץ ZIP

ערכים בקובץ ZIP מסודרים בזה אחר זה כאשר כל ערך מורכב מ:

  • כותרת קובץ מקומית
  • שדות נתונים נוספים אופציונליים
  • נתוני משתמש (אופציונלי דחוס/אופציונלי מוצפן)

כותרת הקובץ המקומית של כל ערך מייצגת מידע על הקובץ כגון הערה, גודל הקובץ ושם הקובץ. שדות הנתונים הנוספים (אופציונלי) יכולים להכיל מידע עבור אפשרויות הרחבה של פורמט ZIP.

כותרת קובץ מקומית

לכותרת הקובץ המקומית יש מבנה שדה ספציפי המורכב מערכי ריבוי בתים. כל הערכים מאוחסנים בסדר בתים קטן-אנדיאן כאשר אורך השדה סופר את האורך בבייטים. כל המבנים בקובץ ZIP משתמשים בחתימות של 4 בתים עבור כל ערך קובץ. הקצה של חתימת הספרייה המרכזית הוא 0x06054b50 וניתן להבחין בה באמצעות חתימה ייחודית משלה. להלן סדר המידע המאוחסן בכותרת הקובץ המקומית.

היסטבייטיםתיאור
04חתימת כותרת קובץ מקומית # 0x04034b50 (קריאה כמספר אנדיאן קטן)
42דרושה גרסה לחילוץ (מינימום)
62דגל סיביות למטרה כללית
82שיטת דחיסה
102זמן השינוי האחרון של הקובץ
122תאריך השינוי האחרון של הקובץ
144CRC-32
184גודל דחוס
224גודל לא דחוס
262אורך שם הקובץ (n)
282אורך שדה נוסף (מ')
30nשם הקובץ
30+nmשדה נוסף

כותרת קובץ מדריך מרכזי

היסטבייטיםתיאור
04חתימת כותרת קובץ ספרייה מרכזית # 0x02014b50
42גרסה שנעשתה על ידי
62דרושה גרסה לחילוץ (מינימום)
82דגל סיביות למטרה כללית
102שיטת דחיסה
122זמן השינוי האחרון של הקובץ
142תאריך השינוי האחרון של הקובץ
164CRC-32
204גודל דחוס
244גודל לא דחוס
282אורך שם הקובץ (n)
302אורך שדה נוסף (מ')
322אורך הערת הקובץ (k)
342מספר דיסק שבו הקובץ מתחיל
362תכונות קובץ פנימיות
384תכונות קובץ חיצוניות
424היסט יחסי של כותרת הקובץ המקומית. זהו מספר הבתים בין תחילת הדיסק הראשון שבו הקובץ מתרחש, לבין תחילת כותרת הקובץ המקומי. זה מאפשר לתוכנה שקוראת את הספרייה המרכזית לאתר את מיקום הקובץ בתוך קובץ ה-ZIP.
46nשם הקובץ
46+nmשדה נוסף
46+n+mkתגובה לקובץ

סוף רשומת המדריך המרכזי

היסטבייטיםתיאור
04חתימת סוף הספרייה המרכזית # 0x06054b50
42מספר של דיסק זה
62דיסק שבו מתחילה ספרייה מרכזית
82מספר רשומות ספריות מרכזיות בדיסק זה
102מספר כולל של רשומות ספריות מרכזיות
124גודל הספרייה המרכזית (בתים)
164קיזוז של תחילת הספרייה המרכזית, ביחס לתחילת הארכיון
202אורך התגובה (n)
22nתגובה

הפניות

ראו גם