Όλα τα μυστικά της συμπίεσης στο GNU / Linux

Σωλήνες συμπίεσης

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

Η αλήθεια είναι ότι δεν υπάρχουν μόνο ευρέως χρησιμοποιούμενα εργαλεία όπως το πίσσα με τα οποία μπορούμε να δημιουργήσουμε πακέτα που μπορούν επίσης να προσθέσουν κάποιο είδος συμπίεσης όπως συνηθίζουμε να βλέπουμε στο τα περίφημα ταρμπάλ για τα οποία έχουμε ήδη μιλήσει LxA σε πολλές περιπτώσεις. Θα βρούμε επίσης παραλλαγές εργαλείων τόσο ασήμαντες και συχνές όπως το grep για αναζήτηση σε συμπιεσμένα αρχεία, όπως συμβαίνει με το bzfgrep, ή ακόμα και άλλα όπως όλο και περισσότερα που έχουν επίσης τις παραλλαγές τους για συμπιεσμένα αρχεία, όπως το bzless και το bzmore. Για να τα δούμε όλα, πρέπει απλώς να ρίξουμε μια ματιά στην έξοδο της ακόλουθης εντολής:

apropos compress

Αλγόριθμοι και δοκιμές:

Μεταξύ όλων αλγόριθμοι Συμπίεση χωρίς απώλειες διαθέσιμη στο Linux για συμπίεση και αποσυμπίεση δεδομένων, έχουμε πολλές επιλογές. Για να λάβετε απόδειξη για το πόσο χρόνο χρειάζεται για τη συμπίεση με έναν ή τον άλλο αλγόριθμο συμπίεσης ή πόσος χρόνος χρειάζεται για να αποσυμπιεστεί, σας προτείνω να κάνετε μερικές δοκιμές μόνοι σας. Μπορείτε να χρησιμοποιήσετε την εντολή time για αυτό, η οποία θα σας δώσει τον χρόνο που απαιτείται για τη διαδικασία συμπίεσης και αποσυμπίεσης. Για παράδειγμα, εάν πρόκειται να χρησιμοποιήσετε το εργαλείο zip για να συμπιέσετε ένα αρχείο που ονομάζεται test:

time zip prueba.zip prueba

Αυτό θα επέστρεφε τον χρόνο που χρησιμοποιήθηκε, αλλά αν θέλετε δείτε το μέγεθος του αρχείου που δημιουργείται, μπορείτε να δοκιμάσετε να συμπιέσετε το ίδιο αρχείο με διαφορετικούς αλγόριθμους και εργαλεία συμπίεσης και αφού έχετε όλα τα αρχεία συμπιεσμένα σε έναν κατάλογο με μια απλή εντολή για να παραθέσετε και να ελέγξετε το μέγεθος που καταλαμβάνει το καθένα:

ls -l

Εάν προτιμάτε, μπορείτε επίσης να χρησιμοποιήσετε άλλα εργαλεία για να συγκρίνετε συμπιεσμένα αρχεία, όπως ορισμένες παραλλαγές του εργαλείου diff:

xzdiff [opciones] fichero1 fichero2

lzdiff [opciones] fichero 1 fichero2

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

Εργαλεία συμπίεσης:

Όσον αφορά τα διαθέσιμα εργαλεία έχουμε πολλά από αυτά, μερικά με γραφική διεπαφή για αρχάριους και ότι θα πρέπει απλώς να αντιμετωπίσουμε ένα απλό και διαισθητικό GUI για να εκτελέσουμε τις συμπιέσεις και τις αποσυμπιέσεις, όπως συμβαίνει με το PeaZip, ή το 7zip,… κ.λπ. Συγκεκριμένα, το πρώτο είναι ικανό να δουλέψει με διάφορες μορφές και συγκεκριμένα περισσότερες από 180 από αυτές. Αλλά αν είστε ένας από αυτούς που εξακολουθούν να τους αρέσει να εργάζονται με το τερματικό, τότε θα έχετε έναν μεγάλο αριθμό εργαλείων που σίγουρα γνωρίζετε:

  • φερμουάρ και αποσυμπίεση: Είναι μια καλή επιλογή εάν αυτό που θέλετε είναι φορητά αρχεία σε άλλα λειτουργικά συστήματα, καθώς θα βρείτε εργαλεία για να εργαστείτε με αυτά τα αρχεία στα συστήματα Microsoft Windows αλλά και στο macOS μεταξύ άλλων. Για παράδειγμα, για να αποσυμπιέσετε ένα αρχείο ή κατάλογο με το όνομα test και στη συνέχεια να το αποσυμπιέσετε:
zip prueba.zip prueba

unzip prueba.zip

  • gzip: είναι το καλύτερο αν θέλετε απλώς φορητότητα μεταξύ λειτουργικών συστημάτων Unix/Linux. Ίσως ο ρυθμός συμπίεσης είναι σχεδόν πανομοιότυπος με το zip, ίσως ελάχιστα καλύτερος, αλλά δεν θα βρείτε μεγάλη διαφορά στα μεγέθη αρχείων κάτω από το zip ή το gzip. Για συμπίεση και αποσυμπίεση με αυτό το εργαλείο μπορούμε να χρησιμοποιήσουμε δύο επιλογές στην περίπτωση αποσυμπίεσης και είναι η επιλογή -do απευθείας χρησιμοποιώντας το ψευδώνυμο gunzip:
gzip prueba

gzip -d prueba.gz

gunzip prueba.gz

  • bzip2: Όπως και ο προηγούμενος, αυτός ο αλγόριθμος είναι πολύ παρών στα λειτουργικά συστήματα Unix/Linux, αν και θα διαρκέσει λίγο περισσότερο στις διαδικασίες συμπίεσης και αποσυμπίεσης από ό,τι στην περίπτωση του gzip. Σε αυτήν την περίπτωση, η καθυστέρηση δεν θα μεταφραστεί σε υψηλότερο ρυθμό συμπίεσης όπως στην περίπτωση του xz, αφού τα αρχεία που συμπιέζονται στο bzip2 θα καταλαμβάνουν λίγο περισσότερο από τα αρχεία gzip. Γι' αυτό συνιστάται να αποφύγετε το bzip2 και να επιλέξετε xz ή gzip. Αν και όλα θα εξαρτηθούν λίγο από τον τύπο του αρχείου που προσπαθείτε να συμπιέσετε... Για παράδειγμα:
bzip2 prueba

bzip2 -d prueba.bz2

  • xz: είναι η προτιμώμενη μορφή για μεγάλα μεγέθη αρχείων, καθώς προσφέρει τους καλύτερους ρυθμούς συμπίεσης, αλλά είναι επίσης αλήθεια ότι θα χρειαστεί περισσότερος χρόνος για να ολοκληρωθεί μια συμπίεση ή αποσυμπίεση. Είναι αρκετά νεότερο από τα προηγούμενα, επομένως μπορεί να συναντήσετε πιο πρωτόγονες διανομές ή παλαιότερα συστήματα Unix που δεν διαθέτουν εργαλείο για αυτό. Παραδείγματα:
xz prueba

xz -d prueba.xz

  • unrar και rar: Μπορούμε επίσης να εργαστούμε με μορφές RAR στο Linux χάρη σε αυτά τα εργαλεία, αν και δεν είναι τόσο δημοφιλές στην περίπτωση των συστημάτων *nix όπως τα προηγούμενα... Σε αυτήν την περίπτωση μπορούμε να επιλέξουμε:
rar a prueba.rar prueba

unrar e prueba.rar

  • συμπίεση και αποσυμπίεση: και παρόλο που η χρήση της συμπίεσης χάνεται και δεν είναι τόσο δημοφιλής όσο οι προηγούμενες, δεν θα ήθελα να παραβλέψω ούτε αυτό το εργαλείο. Χρησιμοποιείται για τη συμπίεση αρχείων με επέκταση .Z και το κάνει χάρη σε έναν τροποποιημένο αλγόριθμο Lempel-Ziv. Για παράδειγμα:
compress -v prueba

uncompress prueba.Z

Εάν θέλετε να συνεργαστείτε απευθείας με το εργαλείο πίσσας, θα μπορείτε επίσης να συσκευάζετε και να συμπιέζετε τα αρχεία ταυτόχρονα καθώς και να τα αποσυσκευάζετε και να τα αποσυμπιέζετε. Σε αυτή την περίπτωση μπορούμε να περάσουμε τις επιλογές του τύπου του αλγορίθμου που θα χρησιμοποιηθεί απευθείας στο tar. Πρώτα από όλα όμως θα πρέπει να ξέρετε ότι με την επιλογή c δημιουργούμε ένα πακέτο και με την επιλογή x το εξάγουμε. Για παράδειγμα:

tar czvf prueba.tar.gz prueba

tar xzvf prueba.tar.gz

Όπως μπορείτε να δείτε έχουμε χρησιμοποιήσει τις επιλογές zvf τα οποία υποδεικνύουν τον τύπο του αλγορίθμου συμπίεσης z (στην περίπτωση αυτή gzip), v για τη λεπτομερή λειτουργία που επιστρέφει πληροφορίες σχετικά με το τι κάνει και f για να υποδείξει το αρχείο με το οποίο θα εργαστεί... Λοιπόν, αν το αλλάξουμε z με ένα άλλο γράμμα που αντιστοιχεί σε άλλο τύπο αλγορίθμου μπορούμε να αλλάξουμε τον τύπο συμπίεσης που εφαρμόζεται στο tarball:

Επιλογή Αλγόριθμος Επέκταση
z gzip .tar.gz
j bzip2 .tar.bz2
J xz .tar.xz
lzip zip .tar.lz
lzma lzma .tar.lzma

*Φυσικά, όλες οι προηγούμενες εντολές έχουν ενδιαφέρουσες επιλογές που σας προσκαλώ να ανακαλύψετε χρησιμοποιώντας το man, κάποιες πολύ απαραίτητες όπως recursion κ.λπ.

Μην ξεχνάτε αφήστε τα σχόλιά σας...


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: AB Internet Networks 2008 SL
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.

  1.   Javier Martinez Echenique dijo

    Εγώ προσωπικά χρησιμοποιώ 7zip

  2.   Μαρσέλο dijo

    Χάσατε το 7zip. Μια πολύ καλή επιλογή και ΔΩΡΕΑΝ ΛΟΓΙΣΜΙΚΟ.

  3.   Umberto dijo

    Εξαιρετικές πληροφορίες, αν και θα ξεκινούσα λέγοντας ότι μπορεί επίσης να συμπιεστεί γραφικά και να αποσυμπιεστεί χωρίς κανένα πρόβλημα για να μην δείτε την "σφήκα" που είναι στο καθήκον να λέει ότι το GNU/Linux είναι πολύ δύσκολο και όλα πρέπει να γίνουν στο την κονσόλα. ΟΧΙ ΕΙΝΑΙ ΑΛΛΗ ΕΠΙΛΟΓΗ.