aspose.info
EL

ΦΕΡΜΟΥΑΡ

Ενημερώθηκε

Τι είναι ένα αρχείο ZIP;

Ένα αρχείο με επέκταση .zip είναι ένα αρχείο που μπορεί να περιέχει ένα ή περισσότερα αρχεία ή καταλόγους. Το αρχείο μπορεί να έχει συμπίεση που εφαρμόζεται στα αρχεία που περιλαμβάνονται προκειμένου να μειωθεί το μέγεθος του αρχείου ZIP. Η μορφή αρχείου ZIP δημοσιοποιήθηκε τον Φεβρουάριο του 1989 από τον Phil Katz για την επίτευξη αρχειοθέτησης αρχείων και φακέλων. Η μορφή έγινε μέρος του βοηθητικού προγράμματος PKZIP, που δημιουργήθηκε από την PKWARE, Inc. Αμέσως μετά τη διαθεσιμότητα των διαθέσιμων προδιαγραφών, πολλές εταιρείες έκαναν τη μορφή αρχείου ZIP μέρος των βοηθητικών προγραμμάτων λογισμικού τους, όπως η Microsoft (από τα Windows 7), η Apple (Mac OS X ) και πολλές άλλες.

Σύντομο ιστορικό της μορφής αρχείου ZIP

Το ιστορικό της μορφής αρχείου ZIP χρονολογείται από την εκδήλωση αγωγής από την System Enhancement Associates (SEA) κατά της PKWARE για χρήση του βοηθητικού προγράμματος ARC χωρίς δικαιώματα για το εμπορικό σήμα και τα πνευματικά δικαιώματα της εμφάνισης και της διεπαφής χρήστη του προϊόντος. Πριν από αυτό, ο Phil Katz, είχε ξαναγράψει τον πηγαίο κώδικα της SEA και είχε κυκλοφορήσει το PKXARC, έναν εξαγωγέα ARC, και τον PKARC, έναν συμπιεστή αρχείων, ως δωρεάν λογισμικό για συστήματα που βασίζονται στο MS-DOS. Χάνοντας στη δίκη, η PKWARE δεν μπορούσε πλέον να χρησιμοποιήσει οτιδήποτε σχετίζεται με το ARC. Εδώ ξεκίνησε η δημιουργία μιας νέας συμπίεσης αρχείων, που ονομάζεται ZIP και έγινε μέρος του βοηθητικού προγράμματος PKZIP στην PKWARE, Inc.

Ο Katz κυκλοφόρησε τις προδιαγραφές μορφής αρχείου ZIP στο δημόσιο τομέα, διατηρώντας παράλληλα τα δικαιώματα ιδιοκτησίας για το βοηθητικό πρόγραμμα συμπίεσης και εξαγωγής, π.χ. PKZIP. Το σύστημα συμπίεσης ZIP ήταν (και είναι) σε θέση να αρχειοθετεί αρχεία σε ένα φάκελο μέσω ενός κυκλικού ελέγχου πλεονασμού 32-bit (CRC) αλγόριθμος για τη συμπίεση του αρχείου μεγέθη. Σε αντίθεση με το ARC, οι φάκελοι .ZIP περιελάμβαναν ένα αρχείο καταλόγου που έπαιζε το ρόλο του βιβλίου κωδικών ενός κρυπτογράφου, που κρατούσε τις απαραίτητες πληροφορίες για την απόδοση των συμπιεσμένων αρχείων.

Υποστηριζόμενες μέθοδοι συμπίεσης σε ZIP

Σύμφωνα με τις προδιαγραφές μορφής αρχείου .ZIP, υποστηρίζονται οι ακόλουθες μέθοδοι συμπίεσης.

  • Αποθήκευση - δεν συνεπάγεται συμπίεση
  • Συρρίκνωση
  • Μείωση (Αυτό συνεπάγεται παράγοντες συμπίεσης που κυμαίνονται από το επίπεδο 1 έως το επίπεδο 4)
  • Έκρηξη
  • Ξεφούσκωμα
  • Deflat64
  • BZIP2
  • LZMA (EFS)
  • WavPack
  • Έκδοση PPMd I, Αναθ. 1

Το DEFLATE είναι η συνήθως χρησιμοποιούμενη μέθοδος συμπίεσης που είναι ένας αλγόριθμος συμπίεσης ημερομηνίας χωρίς απώλειες που χρησιμοποιεί έναν συνδυασμό της κωδικοποίησης LZ77 και Huffman και περιγράφεται λεπτομερώς στο RFC 1951.

Προδιαγραφές μορφής αρχείου ZIP

Τα αρχεία ZIP έχουν τη δυνατότητα αποθήκευσης πολλαπλών αρχείων χρησιμοποιώντας διαφορετικές τεχνικές συμπίεσης ενώ ταυτόχρονα υποστηρίζουν την αποθήκευση ενός αρχείου χωρίς καμία συμπίεση. Κάθε αρχείο αποθηκεύεται/συμπιέζεται ξεχωριστά, κάτι που βοηθά στην εξαγωγή τους ή στην προσθήκη νέων, χωρίς να εφαρμόζεται συμπίεση ή αποσυμπίεση σε ολόκληρο το αρχείο.

Συνολική μορφή αρχείου ZIP

Κάθε αρχείο Zip είναι δομημένο με τον ακόλουθο τρόπο:

Μορφή αρχείου ZIP
Κεφαλίδα τοπικού αρχείου 1
Δεδομένα αρχείου 1
Περιγραφέας δεδομένων 1
Κεφαλίδα τοπικού αρχείου 2
Δεδομένα αρχείου 2
Περιγραφέας δεδομένων 2
….
….
Κεφαλίδα τοπικού αρχείου N
Δεδομένα αρχείου N
Περιγραφέας δεδομένων N
Κεφαλίδα αποκρυπτογράφησης αρχείου
Αρχειοθέτηση επιπλέον αρχείου δεδομένων
Κεντρικός Κατάλογος

Η μορφή αρχείου ZIP χρησιμοποιεί αλγόριθμο CRC 32-bit για σκοπούς αρχειοθέτησης. Προκειμένου να αποδοθούν τα συμπιεσμένα αρχεία, ένα αρχείο ZIP διατηρεί έναν κατάλογο στο τέλος του που διατηρεί την καταχώρηση των περιεχόμενων αρχείων και τη θέση τους στο αρχείο αρχειοθέτησης. Επομένως, παίζει το ρόλο της κωδικοποίησης για την ενθυλάκωση πληροφοριών που είναι απαραίτητες για την απόδοση των συμπιεσμένων αρχείων. Οι αναγνώστες ZIP χρησιμοποιούν τον κατάλογο για να φορτώσουν τη λίστα αρχείων χωρίς να διαβάσουν ολόκληρο το αρχείο ZIP. Η μορφή διατηρεί διπλά αντίγραφα της δομής καταλόγου για να παρέχει μεγαλύτερη προστασία έναντι της απώλειας δεδομένων.

Κάθε αρχείο σε ένα αρχείο ZIP αντιπροσωπεύεται ως μια μεμονωμένη καταχώρηση όπου κάθε καταχώρηση αποτελείται από μια κεφαλίδα τοπικού αρχείου ακολουθούμενη από τα συμπιεσμένα δεδομένα αρχείου. Ο Κατάλογος στο τέλος της αρχειοθέτησης περιέχει τις αναφορές σε όλες αυτές τις εγγραφές αρχείων. Οι αναγνώστες αρχείων ZIP θα πρέπει να αποφεύγουν την ανάγνωση των τοπικών κεφαλίδων αρχείων και κάθε είδους λίστα αρχείων θα πρέπει να διαβάζεται από τον Κατάλογο. Αυτός ο Κατάλογος είναι η μόνη πηγή για έγκυρες καταχωρίσεις αρχείων στο αρχείο, καθώς τα αρχεία μπορούν να προσαρτηθούν και προς το τέλος του αρχείου. Αυτός είναι ο λόγος για τον οποίο εάν ένας αναγνώστης διαβάσει τις τοπικές κεφαλίδες ενός αρχείου ZIP από την αρχή, μπορεί να διαβάσει μη έγκυρες (διαγραμμένες) εγγραφές, καθώς και αυτές που δεν αποτελούν μέρος του Καταλόγου που διαγράφεται από το αρχείο.

Η σειρά των καταχωρήσεων αρχείων στον κεντρικό κατάλογο δεν χρειάζεται να συμπίπτει με τη σειρά των καταχωρήσεων αρχείων στο αρχείο.

Εγγραφές αρχείου ZIP

Οι εγγραφές στο αρχείο ZIP ταξινομούνται η μία μετά την άλλη όπου κάθε καταχώρηση αποτελείται από:

  • Κεφαλίδα τοπικού αρχείου
  • Προαιρετικά επιπλέον πεδία δεδομένων
  • Δεδομένα χρήστη (προαιρετικά συμπιεσμένα/προαιρετικά κρυπτογραφημένα)

Η κεφαλίδα τοπικού αρχείου κάθε καταχώρισης αντιπροσωπεύει πληροφορίες σχετικά με το αρχείο, όπως σχόλιο, μέγεθος αρχείου και όνομα αρχείου. Τα επιπλέον πεδία δεδομένων (προαιρετικά) μπορούν να φιλοξενήσουν πληροφορίες για επιλογές επεκτασιμότητας της μορφής ZIP.

Κεφαλίδα τοπικού αρχείου

Η κεφαλίδα τοπικού αρχείου έχει συγκεκριμένη δομή πεδίου που αποτελείται από τιμές πολλών byte. Όλες οι τιμές αποθηκεύονται με σειρά λίγων byte, όπου το μήκος πεδίου μετράει το μήκος σε byte. Όλες οι δομές σε ένα αρχείο ZIP χρησιμοποιούν υπογραφές 4 byte για κάθε καταχώρηση αρχείου. Το τέλος της υπογραφής κεντρικού καταλόγου είναι 0x06054b50 και μπορεί να διακριθεί χρησιμοποιώντας τη δική του μοναδική υπογραφή. Ακολουθεί η σειρά των πληροφοριών που είναι αποθηκευμένες στην κεφαλίδα τοπικού αρχείου.

OffsetByteΠεριγραφή
04Υπογραφή κεφαλίδας τοπικού αρχείου # 0x04034b50 (διαβάζεται ως αριθμός μικρότερος)
42Απαιτείται έκδοση για εξαγωγή (ελάχιστο)
62Σημαία bit γενικής χρήσης
82Μέθοδος συμπίεσης
102Χρόνος τελευταίας τροποποίησης αρχείου
122Ημερομηνία τελευταίας τροποποίησης αρχείου
144CRC-32
184Συμπιεσμένο μέγεθος
224Ασυμπίεστο μέγεθος
262Μήκος ονόματος αρχείου (n)
282Επιπλέον μήκος πεδίου (m)
30nΌνομα αρχείου
30+nmΕπιπλέον πεδίο

Κεφαλίδα αρχείου κεντρικού καταλόγου

OffsetByteΠεριγραφή
04Υπογραφή κεφαλίδας αρχείου κεντρικού καταλόγου # 0x02014b50
42Έκδοση από
62Απαιτείται έκδοση για εξαγωγή (ελάχιστο)
82Σημαία bit γενικής χρήσης
102Μέθοδος συμπίεσης
122Χρόνος τελευταίας τροποποίησης αρχείου
142Ημερομηνία τελευταίας τροποποίησης αρχείου
164CRC-32
204Συμπιεσμένο μέγεθος
244Ασυμπίεστο μέγεθος
282Μήκος ονόματος αρχείου (n)
302Επιπλέον μήκος πεδίου (m)
322Μήκος σχολίου αρχείου (k)
342Αριθμός δίσκου όπου ξεκινά το αρχείο
362Εσωτερικά χαρακτηριστικά αρχείου
384Χαρακτηριστικά εξωτερικού αρχείου
424Σχετική μετατόπιση κεφαλίδας τοπικού αρχείου. Αυτός είναι ο αριθμός των byte μεταξύ της έναρξης του πρώτου δίσκου στον οποίο εμφανίζεται το αρχείο και της έναρξης της κεφαλίδας του τοπικού αρχείου. Αυτό επιτρέπει στο λογισμικό που διαβάζει τον κεντρικό κατάλογο να εντοπίσει τη θέση του αρχείου μέσα στο αρχείο ZIP.
46nΌνομα αρχείου
46+nmΕπιπλέον πεδίο
46+n+mkΣχόλιο αρχείου

Τέλος εγγραφής κεντρικού καταλόγου

OffsetByteΠεριγραφή
04Τέλος υπογραφής κεντρικού καταλόγου # 0x06054b50
42Αριθμός αυτού του δίσκου
62Δίσκος όπου ξεκινά ο κεντρικός κατάλογος
82Αριθμός εγγραφών κεντρικού καταλόγου σε αυτόν τον δίσκο
102Συνολικός αριθμός εγγραφών κεντρικού καταλόγου
124Μέγεθος κεντρικού καταλόγου (byte)
164Μετατόπιση έναρξης κεντρικού καταλόγου, σε σχέση με την αρχή του αρχείου
202Μήκος σχολίου (n)
22nΣχόλιο

βιβλιογραφικές αναφορές

Δείτε επίσης