Μορφή αρχείου GZIP

Το GZIP είναι μια δημοφιλής μορφή αρχείου και εφαρμογή λογισμικού που χρησιμοποιείται για συμπίεση και αποσυμπίεση αρχείων. Αναπτύχθηκε ως αλγόριθμος συμπίεσης ελεύθερου και ανοιχτού κώδικα από τους Jean-Loup Gailly και Mark Adler στις αρχές της δεκαετίας του 1990. Το όνομα “GZIP” σημαίνει GNU ZIP, υποδεικνύοντας τη συσχέτισή του με το έργο GNU.
Η συμπίεση GZIP λειτουργεί μειώνοντας το μέγεθος των αρχείων, καθιστώντας ευκολότερη τη μεταφορά τους μέσω δικτύων ή την αποθήκευση στο δίσκο. Επιτυγχάνει συμπίεση αντικαθιστώντας επαναλαμβανόμενες σειρές δεδομένων με αναφορές, μειώνοντας έτσι τον πλεονασμό και το συνολικό μέγεθος του αρχείου. Το GZIP είναι ιδιαίτερα αποτελεσματικό για τη συμπίεση αρχείων που βασίζονται σε κείμενο όπως HTML, CSS, JavaScript, XML και JSON, αλλά μπορεί επίσης να χρησιμοποιηθεί για τη συμπίεση άλλων τύπων αρχείων.

Πληροφορίες για το αρχείο GZIP

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

Εξέλιξη της μορφής αρχείου GZIP

Η μορφή αρχείου GZIP έχει τις ρίζες της στα τέλη της δεκαετίας του 1980, όταν οι Jean-loup Gailly και Mark Adler ανέπτυξαν τον αλγόριθμο συμπίεσης GZIP ως μέρος του έργου GNU. Το GZIP σημαίνει GNU ZIP, αντικατοπτρίζοντας την προέλευσή του μέσα στο έργο GNU. Ο στόχος ήταν να δημιουργηθεί ένα εργαλείο συμπίεσης που θα μπορούσε να μειώσει αποτελεσματικά το μέγεθος των αρχείων διατηρώντας παράλληλα τη συμβατότητα μεταξύ διαφορετικών συστημάτων υπολογιστών.
Ο Jean-loup Gailly και ο Mark Adler ανέπτυξαν το πρόγραμμα ως μια δωρεάν εναλλακτική λύση στο βοηθητικό πρόγραμμα συμπίεσης που βρέθηκε στα πρώιμα συστήματα Unix. Σχεδιάστηκε για να είναι μέρος του έργου GNU, εξ ου και το “g” στο gzip. Η αρχική έκδοση, η έκδοση 0.1, έγινε διαθέσιμη στο κοινό στις 31 Οκτωβρίου 1992, ακολουθούμενη από την έκδοση 1.0 τον Φεβρουάριο του 1993.

Δομή GZIP

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

  • Κεφαλίδα (10 byte): Αυτή η ενότητα παρέχει βασικές πληροφορίες σχετικά με το αρχείο και τα περιεχόμενά του. Ακολουθεί μια ανάλυση των δεδομένων κεφαλίδας
  • Μαγικός αριθμός (4 byte): Αυτό προσδιορίζει το αρχείο ως αρχείο GZIP. Έχει μια συγκεκριμένη δεκαεξαδική τιμή (1f 8b) που αναγνωρίζουν τα εργαλεία αποσυμπίεσης.
  • Μέθοδος συμπίεσης (1 byte): Αυτό το byte έχει συνήθως την τιμή 8, υποδεικνύοντας τον αλγόριθμο συμπίεσης DEFLATE που χρησιμοποιείται από το GZIP.
  • Σημαίες κεφαλίδας (1 byte): Αυτές οι σημαίες ελέγχουν συγκεκριμένες πτυχές της αποσυμπίεσης, όπως η κωδικοποίηση ονόματος αρχείου ή η παρουσία σχολίου.
  • Χρόνος δημιουργίας (4 byte): Αυτή η ενότητα αποθηκεύει μια χρονική σήμανση Unix που υποδεικνύει την ώρα που δημιουργήθηκε το αρχείο.
  • CRC-32 (4 byte): Αυτή η τιμή Cyclic Redundancy Check χρησιμοποιείται για τον εντοπισμό σφαλμάτων κατά την αποσυμπίεση. Υπολογίζεται με βάση τα ασυμπίεστα δεδομένα και επιτρέπει στο λογισμικό αποσυμπίεσης να επαληθεύει την ακεραιότητα των εξαγόμενων αρχείων.

Πλεονεκτήματα αυτής της μορφής

  • Συμπίεση χωρίς απώλειες: Το GZIP συμπιέζει δεδομένα χωρίς απώλεια πληροφοριών. Σε αντίθεση με ορισμένες τεχνικές συμπίεσης, τα πρωτότυπα αρχεία μπορούν να ανακατασκευαστούν τέλεια μετά την αποσυμπίεση. Αυτό είναι ζωτικής σημασίας για σημαντικά έγγραφα, εικόνες ή κώδικα όπου η διατήρηση της ακεραιότητας των δεδομένων είναι απαραίτητη.
  • Ευρεία συμβατότητα: Ένα από τα μεγαλύτερα δυνατά σημεία του GZIP είναι η ευρεία υιοθέτησή του. Υποστηρίζεται από τα περισσότερα λειτουργικά συστήματα, βοηθητικά προγράμματα αρχειοθέτησης (WinRAR, 7-Zip) και διακομιστές ιστού. Αυτό διασφαλίζει ότι μπορείτε εύκολα να ανοίξετε αρχεία GZIP σε διάφορες πλατφόρμες χωρίς να χρειάζεστε συγκεκριμένο λογισμικό. Επίσης, το GZIP υποστηρίζεται ευρέως σε διάφορα λειτουργικά συστήματα, συμπεριλαμβανομένων συστημάτων που βασίζονται σε Unix, Linux, Windows και macOS. Αυτή η συμβατότητα μεταξύ πλατφορμών διασφαλίζει ότι τα συμπιεσμένα με GZIP αρχεία μπορούν να δημιουργηθούν και να αποσυμπιεστούν απρόσκοπτα σε διαφορετικά περιβάλλοντα.
  • Συμπίεση με δυνατότητα ροής: Το GZIP υποστηρίζει τη συμπίεση ροής, επιτρέποντας τη συμπίεση ή την αποσυμπίεση των αρχείων on-the-fly χωρίς να χρειάζεται να περιμένετε να επεξεργαστεί ολόκληρο το αρχείο. Αυτό το καθιστά κατάλληλο για σενάρια όπου τα δεδομένα παράγονται ή μεταδίδονται συνεχώς, όπως επικοινωνία δικτύου και λειτουργίες δημιουργίας αντιγράφων ασφαλείας δεδομένων.
  • Open Standard: Το GZIP είναι ένα ανοιχτό και ευρέως διαδεδομένο πρότυπο για τη συμπίεση αρχείων, με τις προδιαγραφές που είναι διαθέσιμες στο κοινό. Αυτό το άνοιγμα ενθαρρύνει τη διαλειτουργικότητα και τη συμβατότητα μεταξύ διαφορετικών εφαρμογών λογισμικού και συστημάτων, ενισχύοντας ένα ζωντανό οικοσύστημα εργαλείων και βιβλιοθηκών για εργασία με αρχεία συμπιεσμένα με GZIP. Η χρήση του GZIP είναι γενικά απλή. Πολλά εργαλεία και λογισμικό συμπιέζουν ή αποσυμπιέζουν αυτόματα αρχεία σε αυτήν τη μορφή. Επιπλέον, η διαδικασία αποσυμπίεσης είναι αποτελεσματική και απαιτεί ελάχιστους πόρους.

Λειτουργίες που υποστηρίζονται από το αρχείο GZIP

Το Aspose.ZIP επιτρέπει στον χρήστη να εξάγει είτε συγκεκριμένη καταχώρηση είτε ολόκληρο το αρχείο. Για το Aspose.ZIP για .NET Μπορείτε να χρησιμοποιήσετε το GzipArchiveClass για να ανοίξετε το αρχείο .gz και στη συνέχεια να επαναλάβετε τις καταχωρίσεις του, εξάγοντας τες σε μια επιθυμητή θέση. Για Aspose.ZIP για Java Παρόμοια προσέγγιση χρησιμοποιώντας το GzipArchive για να ανοίξετε το αρχείο .gz και να εξαγάγετε καταχωρήσεις.

Αρχείο GZIP - Εσωτερική δομή

Το αρχείο GZIP είναι σαν ένα τακτοποιημένο πακέτο. Ξεκινά με μια κεφαλίδα 10 byte που εισάγει τη μορφή και τη μέθοδο συμπίεσης. Η καρδιά βρίσκεται στο τμήμα συμπιεσμένων δεδομένων, συρρικνωμένη χρησιμοποιώντας έξυπνους αλγόριθμους. Τέλος, ένα υποσέλιδο 8 byte επαληθεύει την ακεραιότητα των δεδομένων με αθροίσματα ελέγχου, διασφαλίζοντας ότι τα αρχεία σας φτάνουν με ασφάλεια μετά την αποσυμπίεση.

Αρχείο GZIP - Εσωτερική δομή

Εσωτερική δομή αρχείου

  • Μεταδεδομένα αρχείου - Παρόμοια με ένα αρχείο tar, κάθε αρχείο αποθηκεύει βασικές πληροφορίες όπως ο χρόνος τροποποίησης και τα δικαιώματα. Ωστόσο, αυτή η ενότητα είναι ευέλικτη και επιτρέπει την παράλειψη ή τη συμπερίληψη πρόσθετων λεπτομερειών όπως λίστες ελέγχου πρόσβασης (ACL) ή εκτεταμένα χαρακτηριστικά (EA) με βάση τις ανάγκες σας. Συνιστάται να συμπεριλάβετε μια ισχυρή συνάρτηση κατακερματισμού (όπως το SHA1) για κανονικά αρχεία για να διασφαλίσετε την ακεραιότητα των δεδομένων.
  • Πολλαπλές ροές περιεχομένου - Σε αντίθεση με τα παραδοσιακά αρχεία, τα αρχεία μπορούν να έχουν περισσότερες από μία ροές δεδομένων στο εσωτερικό αρχείο δεδομένων. Αυτό είναι χρήσιμο για την αποθήκευση εκτεταμένων χαρακτηριστικών ή πιρουνιών πόρων που σχετίζονται με το αρχείο.
  • Κεφαλίδες - Το εσωτερικό αρχείο ευρετηρίου περιέχει κεφαλίδες αρχείων, αντικατοπτρίζοντας αυτές που είναι διάσπαρτες σε όλο το εσωτερικό αρχείο δεδομένων. Όμως, όταν αποθηκεύονται χωριστά, οι κεφαλίδες ευρετηρίου πρέπει να αναφέρονται στην αρχική θέση των αντίστοιχων δεδομένων τους μέσα στο αρχείο δεδομένων. Επιπλέον, οι εγγραφές καταλόγου στο ευρετήριο παραθέτουν τα περιεχόμενα αρχεία τους και τις αντίστοιχες μετατοπίσεις τους εντός του ευρετηρίου εσωτερικού αρχείου.
  • Αιτιολογία για Διπλότυπα Μεταδεδομένα - Αυτή η επιλογή σχεδίασης εξασφαλίζει αποτελεσματική ροή δεδομένων/αποκωδικοποίηση και τυχαία πρόσβαση σε αρχεία. Επιπλέον, τα μεταδεδομένα συμπιέζονται καλά, με αποτέλεσμα ελάχιστο κόστος αποθήκευσης. Οι δοκιμές δείχνουν ότι τα μεταδεδομένα καταλαμβάνουν συνήθως λιγότερο από το 0,3% του αποθηκευτικού χώρου, καθιστώντας τον συμβιβασμό χρήσιμο.
  • Κεφαλίδες μπλοκ - Οι κεφαλίδες μπλοκ, παρόμοιες με το εξωτερικό αρχείο, περιέχουν πληροφορίες μεγέθους μπλοκ και μια μοναδική ακολουθία αναγνωριστικών.

Παραδείγματα χρήσης GZIP

Το Aspose.ZIP API επιτρέπει την εξαγωγή αρχείων στις εφαρμογές σας χωρίς την ανάγκη χρήσης άλλων εφαρμογών τρίτων. Το Aspose.ZIP API παρέχει κλάση GzipArchive για εργασία με αρχεία GZIP.

GZIP with compress only single source via C#

Such archives like GZIP, LZ, BZIP2, XZ, Z do not support entries and can compress only single source. See samples with such a compression.

    using (FileStream source = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
    {
        using (GzipArchive archive = new GzipArchive())
        {
            archive.SetSource(source);
            archive.Save(«archive.gz);
        }
    }

Aspose.Zip offers individual archive processing APIs for popular development environments, listed below:

Aspose.Zip for .NETAspose.Zip via JavaAspose.Zip via Python.NET

Πρόσθετες πληροφορίες για τα αρχεία GZIP

Ο κόσμος ρωτούσε

1. Τι είναι το GZIP;

Το GZIP (GNU zipped archive) είναι μια δημοφιλής μορφή αρχείου που συρρικνώνει το μέγεθος των αρχείων για ευκολότερη αποθήκευση και μετάδοση.

2. Πώς συγκρίνεται η συμπίεση GZIP με άλλες μορφές όπως το ZIP;

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

3. Μπορεί το GZIP να συμπιέσει πολλά αρχεία σε ένα μόνο αρχείο;

Το GZIP έχει σχεδιαστεί για να συμπιέζει ένα μόνο αρχείο, όχι πολλά αρχεία ή καταλόγους. Ωστόσο, είναι σύνηθες να χρησιμοποιούνται εργαλεία όπως το tar σε συνδυασμό με το GZIP για τη δημιουργία ενός tarball αρχείο tar και στη συνέχεια συμπιέστε το χρησιμοποιώντας το GZIP για να δημιουργήσετε ένα μόνο συμπιεσμένο αρχείο.