Ποιο είναι το πλεονέκτημα της χρήσης της μορφής αρχείου Tar ως σήμερα;
Η μορφή αρχειοθέτησης πίσσας είναι, σε υπολογιστικά χρόνια, ένα πραγματικό Methuselah, αλλά εξακολουθεί να είναι σε βαριά χρήση σήμερα. Τι κάνει τη μορφή πίσσας τόσο χρήσιμη πολύ καιρό μετά την έναρξή της?
Η σημερινή συνάντηση ερωτήσεων και απαντήσεων έρχεται σε επαφή με το SuperUser - μια υποδιαίρεση του Stack Exchange, μια κοινότητα που κατευθύνεται από τους ιστότοπους ερωτήσεων & απαντήσεων.
Το ερώτημα
Ο αναγνώστης SuperUser MarcusJ είναι περίεργος για τη μορφή πίσσας και γιατί το χρησιμοποιούμε ακόμα μετά από όλα αυτά τα χρόνια:
Γνωρίζω ότι η πίσσα έγινε για αρχεία ταινιών πίσω την ημέρα, αλλά σήμερα έχουμε αρχειακές μορφές αρχείων που συγκεντρώνουν αρχεία και εκτελούν συμπίεση μέσα στην ίδια λογική μορφή αρχείου.
Ερωτήσεις:
- Υπάρχει μια ποινή απόδοση κατά τη διάρκεια της συσσωμάτωσης / συμπίεσης στάδια / αποσυμπίεση για τη χρήση πίσσας έγκλειστα σε gzip ή bzip2, όταν συγκρίνεται με τη χρήση ενός μορφή αρχείου που κάνει συσσωμάτωση και συμπίεση με την ίδια δομή δεδομένων; Υποθέστε ότι ο χρόνος εκτέλεσης του συμπιεστή που συγκρίνεται είναι ταυτόσημος (π.χ. gzip και Deflate είναι παρόμοιοι).
- Υπάρχουν λειτουργίες μορφής αρχείου tar που δεν έχουν άλλες μορφές αρχείων, όπως τα .7z και .zip?
- Δεδομένου ότι η πίσσα είναι μια τέτοια παλιά μορφή αρχείου και νεότερες μορφές αρχείων υπάρχουν σήμερα, γιατί είναι πίσσα (αν είναι έγκλειστα σε gzip, bzip2 ή ακόμα και τη νέα xz) εξακολουθεί να χρησιμοποιείται τόσο ευρέως σήμερα για το GNU / Linux, Android, BSD, και άλλα τέτοια UNIX λειτουργικά συστήματα, για μεταφορές αρχείων, πηγή προγραμμάτων και δυαδικές λήψεις, και μερικές φορές ακόμη και ως μορφή διαχειριστή πακέτων?
Αυτό είναι μια απολύτως εύλογη ερώτηση. τόσο πολύ έχει αλλάξει στον κόσμο των υπολογιστών τα τελευταία τριάντα χρόνια, αλλά εξακολουθούμε να χρησιμοποιούμε τη μορφή πίσσας. Ποια είναι η υπόθεση?
Η απάντηση
Ο συνεργάτης του SuperUser Allquixotic προσφέρει κάποια εικόνα για τη μακροζωία και τη λειτουργικότητα της μορφής πίσσας:
Μέρος 1: Απόδοση
Εδώ είναι μια σύγκριση δύο ξεχωριστών ροών εργασίας και τι κάνουν.
Έχετε ένα αρχείο στο δίσκο
blah.tar.gz
που είναι, ας πούμε, 1 GB gzip-συμπιεσμένα δεδομένα τα οποία, όταν ασυμπίεστοι, καταλαμβάνουν 2 GB (έτσι μια αναλογία συμπίεσης 50%).Ο τρόπος με τον οποίο θα δημιουργούσατε αυτό, αν θέλετε να κάνετε αρχειοθέτηση και συμπίεση χωριστά, θα ήταν:
tar cf blah.tar αρχεία ...
Αυτό θα είχε ως αποτέλεσμα
blah.tar
που αποτελεί απλή συνένωση τουαρχεία ...
σε ασυμπίεστη μορφή.Τότε θα το κάνατε
gzip blah.tar
Αυτό θα διαβάσει το περιεχόμενο του
blah.tar
από το δίσκο, να τα συμπιέσετε μέσω του αλγόριθμου συμπίεσης gzip, να γράψετε τα περιεχόμενα σεblah.tar.gz
, τότε αποσυνδέστε (διαγράψτε) το αρχείοblah.tar
.Τώρα, ας αποσυμπιέσουμε!
Τρόπος 1
Εχεις
blah.tar.gz
, με τον ένα ή με τον άλλο τρόπο.Αποφασίζετε να εκτελέσετε:
gunzip blah.tar.gz
αυτό θα
- ΔΙΑΒΑΣΤΕ τα περιεχόμενα συμπιεσμένων δεδομένων 1 GB του
blah.tar.gz
.- ΕΠΕΞΕΡΓΑΣΤΕ τα συμπιεσμένα δεδομένα μέσω του
gzip
αποσυμπιεστή στη μνήμη.- Καθώς η προσωρινή μνήμη συμπληρώνεται με δεδομένα "ενός μπλοκ", Γράψτε τα μη συμπιεσμένα δεδομένα στο αρχείο
blah.tar
στο δίσκο και επαναλάβετε μέχρι να διαβάσετε όλα τα συμπιεσμένα δεδομένα.- Αποσύνδεση (διαγραφή) του αρχείου
blah.tar.gz
.Τώρα, έχετε
blah.tar
στο δίσκο, το οποίο είναι ασυμπίεστο, αλλά περιέχει ένα ή περισσότερα αρχεία εντός αυτού, με πολύ χαμηλή γενική δομή δεδομένων. Το μέγεθος του αρχείου είναι πιθανότατα ένα δευτερόλεπτο bytes μεγαλύτερο από το άθροισμα όλων των δεδομένων αρχείου.Τρέχεις:
tar xvf blah.tar
αυτό θα
- ΔΙΑΒΑΣΤΕ τα 2GB ασυμπίεστου περιεχομένου δεδομένων του
blah.tar
και τοπίσσα
δομές δεδομένων μορφής αρχείου, συμπεριλαμβανομένων πληροφοριών σχετικά με δικαιώματα αρχείων, ονόματα αρχείων, καταλόγους κτλ.- Γράψτε στο δίσκο τα 2GB δεδομένων μαζί με τα μεταδεδομένα. Αυτό περιλαμβάνει: μετάφραση των πληροφοριών δομή δεδομένων / μεταδεδομένων στη δημιουργία νέων αρχείων και καταλόγων στο δίσκο ανάλογα με την περίπτωση, ή επανεγγραφής υπάρχοντα αρχεία και καταλόγους με τα νέα περιεχόμενα των δεδομένων.
Τα συνολικά δεδομένα που εμείς ΑΝΑΓΝΩΣΗ από το δίσκο σε αυτή τη διαδικασία ήταν 1GB (για gunzip) + 2GB (για πίσσα) = 3GB.
Τα συνολικά δεδομένα που εμείς ΑΠΟΣΤΟΛΗ σε δίσκο σε αυτή τη διαδικασία ήταν 2GB (για gunzip) + 2GB (για πίσσα) + μερικά bytes για μεταδεδομένα = περίπου 4GB.
Τρόπος 2
Εχεις
blah.tar.gz
, με τον ένα ή με τον άλλο τρόπο.Αποφασίζετε να εκτελέσετε:
tar xvzf blah.tar.gz
αυτό θα
- ΔΙΑΒΑΣΤΕ τα περιεχόμενα συμπιεσμένων δεδομένων 1 GB του
blah.tar.gz
, ένα μπλοκ κάθε φορά, στη μνήμη.- ΕΠΕΞΕΡΓΑΣΤΕ τα συμπιεσμένα δεδομένα μέσω του
gzip
αποσυμπιεστή στη μνήμη.- Καθώς το buffer της μνήμης γεμίζει, θα το κάνει σωλήνας τα δεδομένα, στη μνήμη, μέχρι το
πίσσα
αναλυτής μορφής αρχείου, ο οποίος θα διαβάσει τις πληροφορίες σχετικά με τα μεταδεδομένα κ.λπ. και τα δεδομένα ασυμπίεστου αρχείου.- Καθώς η προσωρινή μνήμη συμπληρώνεται στο
πίσσα
parser, θα γράψει τα ασυμπίεστα δεδομένα στο δίσκο, δημιουργώντας αρχεία και καταλόγους και γεμίζοντας τα με ασυμπίεστο περιεχόμενο.Τα συνολικά δεδομένα που εμείς ΑΝΑΓΝΩΣΗ από το δίσκο σε αυτή τη διαδικασία ήταν 1GB συμπιεσμένων δεδομένων, περίοδος.
Τα συνολικά δεδομένα που εμείς ΑΠΟΣΤΟΛΗ σε δίσκο σε αυτή τη διαδικασία ήταν 2GB μη συμπιεσμένων δεδομένων + μερικά byte για μεταδεδομένα = περίπου 2GB.
Αν παρατηρήσετε, η ποσότητα δίσκου εισόδου / εξόδου στο Τρόπος 2 είναι πανομοιότυπο στο δίσκο I / O που εκτελείται από, ας πούμε, το
Φερμουάρ
ή7-Zip
προγράμματα, προσαρμόζοντας για τυχόν διαφορές στη σχέση συμπίεσης.Και αν η αναλογία συμπίεσης είναι η ανησυχία σας, χρησιμοποιήστε το
Xz
συμπιεστή για να ενθυλακωθείπίσσα
, και έχετε LZMA2'ed αρχείο TAR, το οποίο είναι εξίσου αποτελεσματικό με τον πιο προηγμένο αλγόριθμο που είναι διαθέσιμος7-Zip
:-)Μέρος 2: Χαρακτηριστικά
πίσσα
δικαιώματα καταστήματα UNIX μέσα σε μεταδεδομένα του αρχείου, και είναι πολύ καλά γνωστή και εξετάστηκαν για την επιτυχή συσκευασία ένα κατάλογο με όλα τα είδη των διαφορετικών δικαιώματα, συμβολικές συνδέσεις, κλπ υπάρχουν περισσότερο από λίγες περιπτώσεις όπου θα μπορούσε κανείς να χρειαστεί να glob μια δέσμη των αρχείων σε ένα μόνο αρχείο ή ρεύμα, αλλά όχι απαραίτητα να το συμπιέσετε (αν και η συμπίεση είναι χρήσιμη και συχνά χρησιμοποιείται).Μέρος 3: Συμβατότητα
Πολλά εργαλεία διανέμονται στην πηγή ή δυαδική μορφή .tar.gz ή .tar.bz2 επειδή είναι ένα «ελάχιστο κοινό παρονομαστή» μορφή αρχείου: όπως και οι περισσότεροι χρήστες των Windows να έχουν πρόσβαση σε .zip ή .rar αποσυμπίεσης, οι περισσότερες εγκαταστάσεις Linux, ακόμη και τα πιο βασικά, θα έχουν πρόσβαση σε τουλάχιστον πίσσα και gunzip, ανεξάρτητα από την ηλικία ή το χαμένο κάτω. Ακόμα και τα firmware Android έχουν πρόσβαση σε αυτά τα εργαλεία.
Νέα έργα που στοχεύουν το κοινό τρέχει σύγχρονες διανομές μπορεί πολύ καλά να διανείμει σε μια πιο σύγχρονη μορφή, όπως .tar.xz (με τη χρήση του (LZMA μορφή Xz) συμπίεσης, η οποία συμπιέζει καλύτερα από το gzip ή bzip2), ή .7z, το οποίο είναι παρόμοιο με το τις μορφές αρχείων Zip ή Rar κατά το ότι τόσο συμπιέζει όσο και καθορίζει μια διάταξη για την ενσωμάτωση πολλαπλών αρχείων σε ένα μόνο αρχείο.
Δεν βλέπετε το .7z που χρησιμοποιείται συχνότερα για τον ίδιο λόγο που η μουσική δεν πωλείται από ηλεκτρονικά καταστήματα λήψης σε ολοκαίνουργιες μορφές όπως Opus ή βίντεο στο WebM. Συμβατότητα με ανθρώπους που χρησιμοποιούν αρχαία ή πολύ βασικά συστήματα.
Έχετε κάτι να προσθέσετε στην εξήγηση; Απενεργοποιήστε τα σχόλια. Θέλετε να διαβάσετε περισσότερες απαντήσεις από άλλους τεχνολογικούς χρήστες Stack Exchange; Δείτε το πλήρες νήμα συζήτησης εδώ.