Το Zstandard ή zstd είναι ένας γρήγορος αλγόριθμος συμπίεσης που στοχεύει σε σενάρια συμπίεσης σε πραγματικό χρόνο. Μπορούμε όμως να το χρησιμοποιήσουμε και για αρχεία και δεδομένα του υπολογιστή μας.
Το έργο αναπτύσσεται από την εταιρεία Facebook και παρέχεται ως βιβλιοθήκη για χρήση σε άλλα project. Επίσης διαθέτει και ένα βοηθητικό πρόγραμμα γραμμής εντολών που παράγει και αποκωδικοποιεί αρχεία:
- .zst (το default του zstd)
- .gz (το γνωστό GNU zip / gzip)
- .xz (του 7zip / p7zip)
- .lz4
Το Zstd μπορεί επίσης να ρυθμιστεί ώστε να προσφέρει ισχυρότερες αναλογίες συμπίεσης με το κόστος φυσικά αυτή της ταχύτητας συμπίεσης. Αντίθετα η ταχύτητα αποσυμπίεσης διατηρείται και παραμένει περίπου η ίδια σε όλες τις ρυθμίσεις.
Αξίζει να σημειώσουμε εδώ ότι zstd είναι ιδιαίτερα αποτελεσματικό σε μεγάλα (συνεχή) αρχεία. Αντίθετα όμως, όσο μικρότερη είναι η ποσότητα των δεδομένων για συμπίεση (π.χ. μικρά αρχεία), τόσο πιο δύσκολη είναι η συμπίεση. Αυτό το πρόβλημα είναι κοινό σε όλους τους αλγόριθμους συμπίεσης και ο λόγος είναι ότι οι αλγόριθμοι συμπίεσης μαθαίνουν από προηγούμενα δεδομένα πώς να συμπιέζουν μελλοντικά δεδομένα. Αλλά στην αρχή ενός νέου συνόλου δεδομένων (ένα μικρό αρχείο), δεν υπάρχει «παρελθόν» που να βασίζεται για να βελτιωθεί ή συμπίεση των μελλοντικών δεδομένων.
Για την επίλυση αυτής της κατάστασης, το Zstd προσφέρει μια μέθοδο εκπαίδευσης, ο οποίος μπορεί να χρησιμοποιηθεί για τον συντονισμό του αλγορίθμου για έναν επιλεγμένο τύπο δεδομένων. Το αποτέλεσμα αυτής της εκπαίδευσης είναι αποθηκευμένο σε ένα αρχείο που ονομάζεται «λεξικό», το οποίο πρέπει να φορτωθεί πριν από τη συμπίεση και την αποσυμπίεση. Χρησιμοποιώντας αυτό το λεξικό, ο λόγος συμπίεσης που επιτυγχάνεται σε μικρά δεδομένα βελτιώνεται δραματικά.
Τέλος, ο ίδιος ο πυρήνας Linux από την έκδοση 4.14 και έπειτα διαθέτει υποστήριξη συμπίεσης Zstd για χρήση του στα Btrfs και SquashFS ως νέα μέσα συμπίεσης του συστήματος αρχείων.
Εγκατάσταση του εργαλείου συμπίεσης / αποσυμπίεσης zstd
Μπορείτε να εγκαταστήσετε το εργαλείο συμπίεσης/αποσυμπίεσης μέσα από τα αποθετήρια της διανομής σας:
Arch:
sudo pacman -S zstd
Fedora :
sudo dnf install zstd
openSUSE:
sudo zypper install zstd
Ubuntu:
sudo apt install zstd
Πως χρησιμοποιούμε το Zstd
Το Zstd μπορεί να χρησιμοποιηθεί και μέσω γραφικού περιβάλλοντός αλλά αυτό θα πρέπει να το υποστηρίζει το γραφικό εργαλείο που χρησιμοποιείτε στην διανομή σας.
Παρόλα αυτά, μπορείτε από το τερματικό να κάνετε την δουλειά σας άνετα. Ο τρόπος είναι απλός:
Για να συμπιέσετε:
zstd όνομα-αρχείου
Για να αποσυμπιέστε
unzstd όνομα-αρχείου ή zstd -d όνομα-αρχείου
Συμπίεση φακέλων με το zstd
Στην περίπτωση που θέλετε να συμπιέσετε έναν φάκελο, θα πρέπει πρώτα να φτιάξετε ένα tar του φακέλου και έπειτα να συμπιέσετε το tar. Παράδειγμα:
tar -cvf όνομα.tar φακελος-για-συμπίεση zstd όνομα.tar
Όσοι όμως διαθέτετε την έκδοση 1.30 του tar
τότε δεν χρειάζεται να φτιάξετε πρώτα το tar αρχείο, αλλά μπορείτε να το δημιουργήσετε απευθείας:
tar -cavf όνομα.tar.zst φακελος-για-συμπίεση
Για αποσυμπίεση:
tar -xavf όνομα.tar.zst
Παρόλα αυτά όμως, με αυτή την έμμεση χρήση (μέσω tar) χάνετε πιθανόν παραμέτρους (όπως βαθμοί συμπίεσης, εκπαίδευση κλπ).
Σύγκριση του Zstd με τους παραδοσιακούς αλγορίθμους συμπίεσης
Με το παραπάνω γράφημα τα πλεονεκτήματα του Zstandard είναι προφανή. Οι ταχύτητες συμπίεσης του Zstandard κυμαίνονται από ~ 338 MB / s στο επίπεδο 1 έως ~ 2,6 MB / s στο επίπεδο 22 ενώ καλύπτουν τις αναλογίες συμπίεσης από 3,72 σε 6,05. Το παραπάνω γράφημα όπως και μια ανάλυση των πλεονεκτημάτων του Zstandard θα το βρείτε στις παραπομπές.
παραπομπές:
Πηγή άρθρου: https://planet.ellak.gr/ , https://cerebrux.net