Εγχειρίδια για τη γραμμή εντολών

Man » xz Manual online - λεπτομερής διαδικτυακή τεκμηρίωση για τη σελίδα man xz

🌍
xz, unxz, xzcat, lzma, unlzma, lzcat - Συμπίεση ή αποσυμπίεση αρχείων .xz και .lzma

ΣΥΝΤΑΞΗ

xz [επιλογή...] [αρχείο...]

ΨΕΥΔΩΝΥΜΑ ΕΝΤΟΛΩΝ

Το unxz είναι ισοδύναμο με το xz --decompress.
Το xzcat είναι ισοδύναμο με το xz --decompress --stdout.
Το lzma είναι ισοδύναμο με το xz --format=lzma.
Το unlzma είναι ισοδύναμο με το xz --format=lzma --decompress.
Το lzcat είναι ισοδύναμο με το xz --format=lzma --decompress --stdout.

Όταν γράφετε σενάρια που πρέπει να αποσυμπιέζουν αρχεία, συνιστάται να χρησιμοποιείτε πάντα το όνομα xz με τις κατάλληλες παραμέτρους (xz -d ή xz -dc) αντί για τα ονόματα unxz και xzcat.

ΠΕΡΙΓΡΑΦΗ

Το xz είναι ένα γενικού σκοπού εργαλείο συμπίεσης δεδομένων με σύνταξη γραμμής εντολών παρόμοια με gzip(1) και bzip2(1). Η εγγενής μορφή αρχείου είναι η μορφή .xz, αλλά υποστηρίζονται επίσης η παλαιότερη μορφή .lzma που χρησιμοποιείται από τα LZMA Utils και οι ακατέργαστες συμπιεσμένες ροές χωρίς κεφαλίδες μορφής κοντέινερ. Επιπλέον, υποστηρίζεται η αποσυμπίεση της μορφής .lz που χρησιμοποιείται από το lzip.

Το xz συμπιέζει ή αποσυμπιέζει κάθε αρχείο σύμφωνα με την επιλεγμένη λειτουργία. Εάν δεν δοθούν αρχεία
ή το αρχείο είναι -, το xz διαβάζει από την τυπική είσοδο και γράφει τα επεξεργασμένα δεδομένα στην τυπική
έξοδο. Το xz θα αρνηθεί (θα εμφανίσει ένα σφάλμα και θα παραλείψει το αρχείο) να γράψει συμπιεσμένα δεδομένα στην τυπική
έξοδο εάν είναι τερματικό. Ομοίως, το xz θα αρνηθεί να διαβάσει συμπιεσμένα δεδομένα από την τυπική είσοδο εάν είναι τερματικό.

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

Κατά τη συμπίεση, το επίθημα της μορφής αρχείου στόχου (.xz ή .lzma) προστίθεται στο όνομα του αρχείου προέλευσης για να ληφθεί το όνομα του αρχείου στόχου.

Κατά την αποσυμπίεση, το επίθημα .xz, .lzma ή .lz αφαιρείται από το όνομα του αρχείου για να ληφθεί το όνομα του αρχείου στόχου. Το xz αναγνωρίζει επίσης τα επιθήματα .txz και .tlz και τα αντικαθιστά με το .tar επίθημα.

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

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

Το αρχείο δεν είναι κανονικό αρχείο. Οι συμβολικοί σύνδεσμοι δεν ακολουθούνται και επομένως δεν θεωρούνται κανονικά αρχεία.

Το αρχείο έχει περισσότερους από έναν σκληρούς συνδέσμους.

Το αρχείο έχει ρυθμισμένο το bit setuid, setgid ή το bit stick.

Η λειτουργία έχει ρυθμιστεί σε συμπίεση και το αρχείο έχει ήδη ένα επίθημα της μορφής αρχείου στόχου (.xz ή .txz κατά τη συμπίεση στη μορφή .xz και .lzma ή .tlz κατά τη συμπίεση στη μορφή .lzma).

Η λειτουργία έχει ρυθμιστεί σε αποσυμπίεση και το αρχείο δεν έχει επίθημα καμίας από τις υποστηριζόμενες μορφές αρχείων (.xz, .txz, .lzma, .tlz ή .lz).

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

Μόλις το αρχείο προορισμού έχει κλείσει με επιτυχία, το αρχείο προέλευσης διαγράφεται, εκτός εάν έχει καθοριστεί η επιλογή --keep. Το αρχείο προέλευσης δεν διαγράφεται ποτέ εάν η έξοδος γράφεται στην τυπική έξοδο ή εάν προκύψει σφάλμα.

Η αποστολή ενός σήματος SIGINFO ή SIGUSR1 στη διαδικασία xz προκαλεί την εκτύπωση πληροφοριών προόδου στην τυπική έξοδο σφάλματος. Αυτό έχει περιορισμένη χρησιμότητα, καθώς όταν η τυπική έξοδος σφάλματος είναι ένα τερματικό, η χρήση της επιλογής --verbose θα εμφανίσει μια αυτόματα ενημερωμένη ένδειξη προόδου.

Χρήση μνήμης

Η χρήση μνήμης του xz ποικίλλει από μερικές εκατοντάδες χιλιοστάδες του byte έως αρκετά gigabyte, ανάλογα με τις ρυθμίσεις συμπίεσης. Οι ρυθμίσεις που χρησιμοποιούνται κατά τη συμπίεση ενός αρχείου καθορίζουν τις απαιτήσεις μνήμης του αποσυμπιεστή. Συνήθως, ο αποσυμπιεστής χρειάζεται από 5% έως 20% της ποσότητας μνήμης που χρειάστηκε ο συμπιεστής κατά τη δημιουργία του αρχείου. Για παράδειγμα, η αποσυμπίεση ενός αρχείου που δημιουργήθηκε με την εντολή xz -9 απαιτεί επί του παρόντος 65 MiB μνήμης. Ωστόσο, είναι δυνατό να υπάρχουν αρχεία .xz που απαιτούν αρκετά gigabyte μνήμης για την αποσυμπίεση.

Ειδικά οι χρήστες παλαιότερων συστημάτων μπορεί να διαπιστώσουν ότι η πιθανότητα πολύ μεγάλης χρήσης μνήμης είναι ενοχλητική. Για να αποφευχθούν δυσάρεστες εκπλήξεις, το xz διαθέτει έναν ενσωματωμένο περιοριστή χρήσης μνήμης, ο οποίος είναι απενεργοποιημένος από προεπιλογή. Ενώ ορισμένα λειτουργικά συστήματα παρέχουν τρόπους για τον περιορισμό της χρήσης μνήμης των διεργασιών, η εξάρτηση από αυτό δεν θεωρήθηκε αρκετά ευέλικτη (για παράδειγμα, η χρήση της εντολής ulimit(1) για τον περιορισμό της εικονικής μνήμης τείνει να καταστέλλει τη λειτουργία mmap(2)).

Ο περιοριστής χρήσης μνήμης μπορεί να ενεργοποιηθεί με την επιλογή γραμμής εντολών --memlimit=limit. Συχνά είναι πιο βολικό να ενεργοποιηθεί ο περιοριστής από προεπιλογή, ρυθμίζοντας τη μεταβλητή περιβάλλοντος XZ_DEFAULTS, για παράδειγμα, XZ_DEFAULTS=--memlimit=150MiB. Είναι δυνατό να ρυθμιστούν τα όρια ξεχωριστά για τη συμπίεση και την αποσυμπίεση, χρησιμοποιώντας τις επιλογές --memlimit-compress=limit και --memlimit-decompress=limit. Η χρήση αυτών των δύο επιλογών εκτός του XZ_DEFAULTS είναι σπάνια χρήσιμη, επειδή μια ενιαία εκτέλεση του xz δεν μπορεί να πραγματοποιήσει ταυτόχρονα συμπίεση και αποσυμπίεση, και η επιλογή --memlimit=limit (ή -M limit) είναι συντομότερη στην γραμμή εντολών.

Εάν το καθορισμένο όριο χρήσης μνήμης υπερβηθεί κατά την αποσυμπίεση, το xz θα εμφανίσει ένα σφάλμα και η αποσυμπίεση του αρχείου θα αποτύχει. Εάν το όριο υπερβηθεί κατά τη συμπίεση, το xz θα προσπαθήσει να μειώσει τις ρυθμίσεις, έτσι ώστε το όριο να μην υπερβηθεί πλέον (εκτός εάν χρησιμοποιείται η επιλογή --format=raw ή --no-adjust). Με αυτόν τον τρόπο, η λειτουργία δεν θα αποτύχει, εκτός εάν το όριο είναι πολύ μικρό. Η κλιμάκωση των ρυθμίσεων γίνεται σε βήματα που δεν ταιριάζουν με τις προκαθορισμένες ρυθμίσεις επιπέδου συμπίεσης, για παράδειγμα, εάν το όριο είναι μόνο ελαφρώς μικρότερο από την ποσότητα που απαιτείται για την εντολή xz -9, οι ρυθμίσεις θα μειωθούν μόνο ελαφρώς, και όχι πλήρως στην τιμή xz -8.


Σύνδεση και συμπλήρωση αρχείων .xz

Είναι δυνατή η απλή σύνδεση αρχείων .xz. Το xz θα αποσυμπιέσει αυτά τα αρχεία σαν να ήταν ένα ενιαίο αρχείο .xz.

Είναι δυνατή η εισαγωγή συμπληρωματικών δεδομένων μεταξύ των συνδεδεμένων τμημάτων ή μετά από το τελευταίο τμήμα. Τα συμπληρωματικά δεδομένα πρέπει να αποτελούνται από μηδενικά byte και το μέγεθος των συμπληρωματικών δεδομένων πρέπει να είναι πολλαπλάσιο των τεσσάρων byte. Αυτό μπορεί να είναι χρήσιμο, για παράδειγμα, εάν το αρχείο .xz είναι αποθηκευμένο σε ένα μέσο που μετρά τα μεγέθη αρχείων σε μπλοκ των 512 byte.

Η σύνδεση και η συμπλήρωση δεν επιτρέπονται με αρχεία .lzma ή ακατέργαστες ροές δεδομένων.

ΕΠΙΛΟΓΕΣ

Αριθμητικά επιθήματα και ειδικές τιμές

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

KiB Πολλαπλασιάστε τον αριθμό επί 1.024 (2^10). Τα Ki, k, kB, K και KB γίνονται δεκτά ως συνώνυμα για το KiB.

MiB Πολλαπλασιάστε τον αριθμό επί 1.048.576 (2^20). Τα Mi, m, M και MB γίνονται δεκτά ως συνώνυμα για το MiB.

GiB Πολλαπλασιάστε τον αριθμό επί 1.073.741.824 (2^30). Τα Gi, g, G και GB γίνονται δεκτά ως συνώνυμα για το GiB.

Η ειδική τιμή max μπορεί να χρησιμοποιηθεί για να υποδείξει τη μέγιστη αριθμητική τιμή που υποστηρίζεται από την επιλογή.

Λειτουργία

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

-z, --compress
Συμπίεση. Αυτή είναι η προεπιλεγμένη λειτουργία όταν δεν καθορίζεται καμία επιλογή λειτουργίας και καμία άλλη λειτουργία δεν υπονοείται από την εντολή (για παράδειγμα, το unxz υπονοεί την --decompress).

Μετά από επιτυχή συμπίεση, το αρχείο προέλευσης διαγράφεται, εκτός εάν γίνεται εγγραφή στην τυπική έξοδο ή έχει καθοριστεί η επιλογή --keep.

-d, --decompress, --uncompress
Αποσυμπίεση. Μετά από επιτυχή αποσυμπίεση, το αρχείο προέλευσης διαγράφεται, εκτός εάν γίνεται εγγραφή στην τυπική έξοδο ή έχει καθοριστεί η επιλογή --keep.

-t, --test
Έλεγχος της ακεραιότητας των συμπιεσμένων αρχείων. Αυτή η επιλογή είναι ισοδύναμη με την --decompress --stdout, εκτός από το ότι τα αποσυμπιεσμένα δεδομένα απορρίπτονται αντί να γράφονται στην τυπική έξοδο. Δεν δημιουργούνται ή δεν διαγράφονται αρχεία.

-l, --list
Εμφάνιση πληροφοριών σχετικά με τα συμπιεσμένα αρχεία. Δεν παράγεται έξοδος αποσυμπιεσμένων δεδομένων και δεν δημιουργούνται ή διαγράφονται αρχεία. Στη λειτουργία λίστας, το πρόγραμμα δεν μπορεί να διαβάσει τα συμπιεσμένα δεδομένα από την τυπική είσοδο ή από άλλες μη προσβάσιμες πηγές.

Η προεπιλεγμένη λίστα εμφανίζει βασικές πληροφορίες σχετικά με τα αρχεία, ένα αρχείο ανά γραμμή. Για να λάβετε πιο λεπτομερείς πληροφορίες, χρησιμοποιήστε επίσης την επιλογή --verbose. Για ακόμη περισσότερες πληροφορίες, χρησιμοποιήστε την επιλογή --verbose δύο φορές, αλλά λάβετε υπόψη ότι αυτό μπορεί να είναι αργό, επειδή η λήψη όλων των επιπλέον πληροφοριών απαιτεί πολλές αναζητήσεις. Το πλάτος της λεπτομερούς εξόδου υπερβαίνει τα 80 χαρακτήρες, επομένως η διοχέτευση της εξόδου σε, για παράδειγμα, το less -S μπορεί να είναι βολική εάν το τερματικό δεν είναι αρκετά ευρύ.


Η ακριβής έξοδος μπορεί να διαφέρει ανάμεσα σε διάφορες εκδόσεις του xz και σε διαφορετικές τοπικές ρυθμίσεις. Για έξοδο κατάλληλη για μηχανική ανάγνωση, θα πρέπει να χρησιμοποιηθούν οι επιλογές --robot --list.

Τροποποιητές λειτουργίας

-k, --keep

Μην διαγράφετε τα αρχεία εισόδου.

Από την έκδοση xz 5.2.6, αυτή η επιλογή επιτρέπει επίσης στο xz να συμπιέζει ή να αποσυμπιέζει ακόμη και αν η είσοδος είναι ένας συμβολικός σύνδεσμος σε ένα κανονικό αρχείο, έχει περισσότερους από έναν σκληρούς συνδέσμους ή έχει τις ιδιότητες setuid, setgid ή sticky. Οι ιδιότητες setuid, setgid και sticky δεν αντιγράφονται στο αρχείο προορισμού. Σε παλαιότερες εκδόσεις, αυτό γινόταν μόνο με την επιλογή --force.

-f, --force

Αυτή η επιλογή έχει διάφορες επιπτώσεις:

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

Συμπιέζει ή αποσυμπιέζει ακόμη και αν η είσοδος είναι ένας συμβολικός σύνδεσμος σε ένα κανονικό αρχείο, έχει περισσότερους από έναν σκληρούς συνδέσμους ή έχει τις ιδιότητες setuid, setgid ή sticky. Οι ιδιότητες setuid, setgid και sticky δεν αντιγράφονται στο αρχείο προορισμού.

Όταν χρησιμοποιείται με τις επιλογές --decompress --stdout και το xz δεν μπορεί να αναγνωρίσει τον τύπο του αρχείου εισόδου, αντιγράφει το αρχείο εισόδου όπως έχει στην τυπική έξοδο. Αυτό επιτρέπει στο xzcat --force να χρησιμοποιηθεί όπως το cat(1) για αρχεία που δεν έχουν συμπιεστεί με το xz. Σημειώστε ότι στο μέλλον, το xz ενδέχεται να υποστηρίξει νέες μορφές συμπιεσμένων αρχείων, οι οποίες ενδέχεται να κάνουν το xz να αποσυμπιέζει περισσότερους τύπους αρχείων αντί να τα αντιγράφει όπως έχουν στην τυπική έξοδο. Η επιλογή --format=format μπορεί να χρησιμοποιηθεί για να περιορίσει το xz ώστε να αποσυμπιέζει μόνο ένα μόνο τύπο αρχείου.

-c, --stdout, --to-stdout

Εξάγει τα συμπιεσμένα ή αποσυμπιεσμένα δεδομένα στην τυπική έξοδο αντί σε ένα αρχείο. Αυτό συνεπάγεται την επιλογή --keep.

--single-stream

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

Το xz δεν αποσυμπιέζει ποτέ περισσότερες από μία ροές από αρχεία .lzma ή ακατέργαστες ροές, αλλά αυτή η επιλογή εξακολουθεί να κάνει το xz να αγνοεί τυχόν περιττά δεδομένα μετά το αρχείο .lzma ή την ακατέργαστη ροή.

Αυτή η επιλογή δεν έχει καμία επίδραση εάν η λειτουργία δεν είναι --decompress ή --test.

Από την έκδοση xz 5.7.1alpha, η επιλογή --single-stream συνεπάγεται την επιλογή --keep.

--no-sparse

Απενεργοποιεί τη δημιουργία αρχείων με αραιή διάταξη. Από προεπιλογή, εάν αποσυμπιέζει σε ένα κανονικό αρχείο, το xz προσπαθεί να κάνει το αρχείο αραιό εάν τα αποσυμπιεσμένα δεδομένα περιέχουν μεγάλες ακολουθίες μηδενικών δυαδικών ψηφίων. Λειτουργεί επίσης όταν γράφει στην τυπική έξοδο, εφόσον η τυπική έξοδος είναι συνδεδεμένη σε ένα κανονικό αρχείο και πληρούνται ορισμένες πρόσθετες προϋποθέσεις για να είναι ασφαλές. Η δημιουργία αρχείων με αραιή διάταξη μπορεί να εξοικονομήσει χώρο στο δίσκο και να επιταχύνει την αποσυμπίεση μειώνοντας την ποσότητα της εισόδου/εξόδου του δίσκου.

-S .suf, --suffix=.suf

Κατά τη συμπίεση, χρησιμοποιήστε το .suf ως επέκταση για το αρχείο προορισμού αντί για .xz ή .lzma. Εάν δεν γράφετε στην τυπική έξοδο και το αρχείο πηγής έχει ήδη την επέκταση .suf, εμφανίζεται μια προειδοποίηση και το αρχείο παραλείπεται.

Κατά την αποσυμπίεση, αναγνωρίστε αρχεία με την επέκταση .suf εκτός από αρχεία με τις επεκτάσεις .xz, .txz, .lzma, .tlz ή .lz. Εάν το αρχείο πηγής έχει την επέκταση .suf, η επέκταση αφαιρείται για να ληφθεί το όνομα του αρχείου προορισμού.


Όταν συμπιέζετε ή αποσυμπιέζετε ακατέργαστες ροές (--format=raw), το επίθημα πρέπει πάντα να καθορίζεται εκτός εάν γράφετε στην τυπική έξοδο, επειδή δεν υπάρχει προεπιλεγμένο επίθημα για ακατέργαστες ροές.

--files[=file]
Διαβάστε τα ονόματα αρχείων για επεξεργασία από το αρχείο. εάν το αρχείο παραλειφθεί, τα ονόματα αρχείων διαβάζονται από την τυπική είσοδο. Τα ονόματα αρχείων πρέπει να τερματίζονται με τον χαρακτήρα νέας γραμμής. Ένα παύλα (-) θεωρείται κανονικό όνομα αρχείου· δεν σημαίνει τυπική είσοδο. Εάν τα ονόματα αρχείων δοθούν επίσης ως ορίσματα γραμμής εντολών, αυτά επεξεργάζονται πριν από τα ονόματα αρχείων που διαβάζονται από το αρχείο.

--files0[=file]
Αυτό είναι πανομοιότυπο με το --files[=file] εκτός από το ότι κάθε όνομα αρχείου πρέπει να τερματίζεται με τον χαρακτήρα μηδέν.

Βασικές μορφές αρχείων και επιλογές συμπίεσης

-F format, --format=format
Καθορίστε τη μορφή αρχείου για συμπίεση ή αποσυμπίεση:

auto   Αυτή είναι η προεπιλογή. Όταν συμπιέζετε, το auto είναι ισοδύναμο με το xz. Όταν αποσυμπιέζετε, η μορφή του αρχείου εισόδου ανιχνεύεται αυτόματα. Σημειώστε ότι οι ακατέργαστες ροές (που δημιουργούνται με το --format=raw) δεν μπορούν να ανιχνευθούν αυτόματα.

xz     Συμπιέστε στη μορφή αρχείου .xz ή δεχτείτε μόνο αρχεία .xz κατά την αποσυμπίεση.

lzma, μόνο
Συμπιέστε στη μορφή αρχείου .lzma ή δεχτείτε μόνο αρχεία .lzma κατά την αποσυμπίεση. Το εναλλακτικό όνομα μόνο παρέχεται για λόγους συμβατότητας με το LZMA Utils.

lzip   Δεχτείτε μόνο αρχεία .lz κατά την αποσυμπίεση. Η συμπίεση δεν υποστηρίζεται.

Οι μορφές αρχείου .lz εκδόσεων 0 και 1 υποστηρίζονται. Τα αρχεία έκδοσης 0 δημιουργήθηκαν από το lzip 1.3 και παλαιότερες εκδόσεις. Τέτοια αρχεία δεν είναι συνηθισμένα, αλλά μπορεί να βρεθούν σε αρχεία ως μερικά πακέτα πηγών κυκλοφόρησαν σε αυτή τη μορφή. Μπορεί επίσης να υπάρχουν παλιά προσωπικά αρχεία σε αυτή τη μορφή. Η υποστήριξη αποσυμπίεσης για τη μορφή έκδοσης 0 αφαιρέθηκε στο lzip 1.18. Το lzip 1.4 και μεταγενέστερες εκδόσεις δημιουργούν αρχεία στη μορφή έκδοσης 1.

raw    Συμπιέστε ή αποσυμπιέστε μια ακατέργαστη ροή (χωρίς κεφαλίδες). Αυτό προορίζεται μόνο για προχωρημένους χρήστες. Για να αποκωδικοποιήσετε ακατέργαστες ροές, πρέπει να χρησιμοποιήσετε το --format=raw και να καθορίσετε ρητά την αλυσίδα φίλτρων, η οποία κανονικά θα ήταν αποθηκευμένη στις κεφαλίδες του κοντέινερ.

-C check, --check=check
Καθορίστε τον τύπο του ελέγχου ακεραιότητας. Ο έλεγχος υπολογίζεται από τα δεδομένα που δεν έχουν συμπιεστεί και αποθηκεύεται στο αρχείο .xz. Αυτή η επιλογή έχει αποτέλεσμα μόνο κατά τη συμπίεση στη μορφή .xz. η μορφή .lzma δεν υποστηρίζει ελέγχους ακεραιότητας. Ο έλεγχος ακεραιότητας (εάν υπάρχει) επαληθεύεται όταν το αρχείο .xz αποσυμπιέζεται.

Υποστηριζόμενοι τύποι ελέγχου:

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

crc32  Υπολογίστε το CRC32 χρησιμοποιώντας το πολύωνυμο από το IEEE-802.3 (Ethernet).

crc64  Υπολογίστε το CRC64 χρησιμοποιώντας το πολύωνυμο από το ECMA-182. Αυτό είναι η προεπιλογή, επειδή είναι ελαφρώς καλύτερο από το CRC32 στην ανίχνευση κατεστραμμένων αρχείων και η διαφορά στην ταχύτητα είναι αμελητέα.

sha256 Υπολογίζει το SHA-256. Αυτό είναι ελαφρώς πιο αργό από το CRC32 και το CRC64.

Η ακεραιότητα των κεφαλίδων .xz ελέγχεται πάντα με το CRC32. Δεν είναι δυνατό να αλλάξει ή να απενεργοποιηθεί αυτό.

--ignore-check

Μην ελέγχετε την ακεραιότητα των συμπιεσμένων δεδομένων κατά την αποσυμπίεση. Οι τιμές CRC32 στις κεφαλίδες .xz θα εξακολουθούν να ελέγχονται κανονικά.

Μην χρησιμοποιείτε αυτήν την επιλογή εκτός εάν γνωρίζετε τι κάνετε. Πιθαροί λόγοι για τη χρήση αυτής της επιλογής:

Ανάκτηση δεδομένων από ένα κατεστραμμένο αρχείο .xz.

Επιτάχυνση της αποσυμπίεσης. Αυτό έχει σημασία κυρίως με το SHA-256 ή με αρχεία που έχουν συμπιεστεί εξαιρετικά καλά. Συνιστάται να μην χρησιμοποιείτε αυτήν την επιλογή για αυτόν τον σκοπό, εκτός εάν η ακεραιότητα του αρχείου ελέγχεται εξωτερικά με κάποιο άλλο τρόπο.

-0 ... -9

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

Οι διαφορές μεταξύ των προκαθορισμένων ρυθμίσεων είναι πιο σημαντικές από ό,τι με το gzip(1) και το bzip2(1). Οι επιλεγμένες ρυθμίσεις συμπίεσης καθορίζουν τις απαιτήσεις μνήμης του αποσυμπιεστή, επομένως η χρήση ενός υπερβολικά υψηλού επιπέδου προκαθορισμένων ρυθμίσεων μπορεί να καταστήσει την αποσυμπίεση του αρχείου επίπονη σε ένα παλιό σύστημα με λίγη μνήμη RAM. Συγκεκριμένα, δεν είναι καλή ιδέα να χρησιμοποιείτε τυφλά το -9 για τα πάντα, όπως συχνά συμβαίνει με το gzip(1) και το bzip2(1).

-0 ... -3

Αυτά είναι σχετικά γρήγορα προκαθορισμένα επίπεδα. Το -0 είναι μερικές φορές πιο γρήγορο από το gzip -9 κατά τη συμπίεση, ενώ παράγει πολύ καλύτερη συμπίεση. Τα υψηλότερα επίπεδα συχνά έχουν ταχύτητα συγκρίσιμη με το bzip2(1), με συγκρίσιμο ή καλύτερο λόγο συμπίεσης, αν και τα αποτελέσματα εξαρτώνται σε μεγάλο βαθμό από τον τύπο των δεδομένων που συμπιέζονται.

-4 ... -6

Καλή έως πολύ καλή συμπίεση, διατηρώντας παράλληλα τις εύλογες απαιτήσεις μνήμης του αποσυμπιεστή, ακόμη και για παλαιότερα συστήματα. Το -6 είναι η προεπιλογή, η οποία συνήθως είναι μια καλή επιλογή για τη διανομή αρχείων που πρέπει να μπορούν να αποσυμπιεστούν ακόμη και σε συστήματα με μόλις 16 MiB RAM. (Το -5e ή το -6e μπορεί να αξίζει να εξεταστούν επίσης. Δείτε --extreme.)

-7 ... -9

Αυτά είναι σαν τα -6, αλλά με υψηλότερες απαιτήσεις μνήμης για τον συμπιεστή και τον αποσυμπιεστή. Αυτά είναι χρήσιμα μόνο όταν συμπιέζονται αρχεία μεγαλύτερα από 8 MiB, 16 MiB και 32 MiB, αντίστοιχα.

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

Ο παρακάτω πίνακας συνοψίζει τα χαρακτηριστικά των προκαθορισμένων ρυθμίσεων:

Preset DictSize CompCPU CompMem DecMem -0 256 KiB 0 3 MiB 1 MiB -1 1 MiB 1 9 MiB 2 MiB -2 2 MiB 2 17 MiB 3 MiB -3 4 MiB 3 32 MiB 5 MiB -4 4 MiB 4 48 MiB 5 MiB -5 8 MiB 5 94 MiB 9 MiB -6 8 MiB 6 94 MiB 9 MiB -7 16 MiB 6 186 MiB 17 MiB -8 32 MiB 6 370 MiB 33 MiB -9 64 MiB 6 674 MiB 65 MiB


Περιγραφές στηλών:

Το DictSize είναι το μέγεθος του λεξικού LZMA2. Είναι σπατάλη μνήμης η χρήση λεξικού μεγαλύτερου από το μέγεθος του αρχείου που δεν έχει συμπιεστεί. Αυτός είναι ο λόγος για τον οποίο είναι καλό να αποφεύγετε τη χρήση των προεπιλεγμένων ρυθμίσεων -7 ... -9 όταν δεν υπάρχει πραγματική ανάγκη. Στα -6 και χαμηλότερα, η ποσότητα μνήμης που σπαταλάται είναι συνήθως αρκετά μικρή ώστε να μην έχει σημασία.

Το CompCPU είναι μια απλοποιημένη αναπαράσταση των ρυθμίσεων LZMA2 που επηρεάζουν την ταχύτητα συμπίεσης. Το μέγεθος του λεξικού επηρεάζει επίσης την ταχύτητα, επομένως, ενώ το CompCPU είναι το ίδιο για τα επίπεδα -6 ... -9, τα υψηλότερα επίπεδα τείνουν να είναι λίγο πιο αργά. Για να επιτευχθεί ακόμη μεγαλύτερη ταχύτητα και, επομένως, ενδεχομένως καλύτερη συμπίεση, δείτε το --extreme.

Το CompMem περιέχει τις απαιτήσεις μνήμης του συμπιεστή στη λειτουργία ενός νήματος. Μπορεί να διαφέρει ελαφρώς μεταξύ των εκδόσεων του xz.

Το DecMem περιέχει τις απαιτήσεις μνήμης του αποσυμπιεστή. Δηλαδή, οι ρυθμίσεις συμπίεσης καθορίζουν τις απαιτήσεις μνήμης του αποσυμπιεστή. Η ακριβής χρήση μνήμης του αποσυμπιεστή είναι λίγο μεγαλύτερη από το μέγεθος του λεξικού LZMA2, αλλά οι τιμές στον πίνακα έχουν στρογγυλοποιηθεί στην επόμενη πλήρη MiB.

Οι απαιτήσεις μνήμης της λειτουργίας πολλαπλών νημάτων είναι σημαντικά υψηλότερες από αυτές της λειτουργίας ενός νήματος. Με την προεπιλεγμένη τιμή του --block-size, κάθε νήμα χρειάζεται 3*3*DictSize συν CompMem ή DecMem. Για παράδειγμα, τέσσερα νήματα με την προεπιλεγμένη ρύθμιση -6 χρειάζονται 660–670 MiB μνήμης.

-e, --extreme
Χρησιμοποιήστε μια πιο αργή παραλλαγή της επιλεγμένης προεπιλεγμένης ρύθμισης συμπίεσης (-0 ... -9) για να επιτύχετε πιθανώς μια ελαφρώς καλύτερη αναλογία συμπίεσης, αλλά με κακή τύχη αυτό μπορεί επίσης να το κάνει χειρότερο. Η χρήση μνήμης του αποσυμπιεστή δεν επηρεάζεται, αλλά η χρήση μνήμης του συμπιεστή αυξάνεται ελαφρώς στα επίπεδα προεπιλογής -0 ... -3.

Επειδή υπάρχουν δύο προεπιλογές με μεγέθη λεξικού 4 MiB και 8 MiB, οι προεπιλογές -3e και -5e χρησιμοποιούν ελαφρώς ταχύτερες ρυθμίσεις (χαμηλότερο CompCPU) από τις -4e και -6e, αντίστοιχα. Με αυτόν τον τρόπο, καμία από τις προεπιλογές δεν είναι πανομοιότυπη.

Preset   DictSize   CompCPU   CompMem   DecMem
    -0e     256 KiB       8        4 MiB    1 MiB
    -1e       1 MiB       8       13 MiB    2 MiB
    -2e       2 MiB       8       25 MiB    3 MiB
    -3e       4 MiB       7       48 MiB    5 MiB
    -4e       4 MiB       8       48 MiB    5 MiB
    -5e       8 MiB       7       94 MiB    9 MiB
    -6e       8 MiB       8       94 MiB    9 MiB
    -7e      16 MiB       8      186 MiB   17 MiB
    -8e      32 MiB       8      370 MiB   33 MiB
    -9e      64 MiB       8      674 MiB   65 MiB

Για παράδειγμα, υπάρχουν συνολικά τέσσερις προεπιλογές που χρησιμοποιούν λεξικό 8 MiB, των οποίων η σειρά από το ταχύτερο στο πιο αργό είναι -5, -6, -5e και -6e.

--fast
--best Αυτές είναι κάπως παραπλανητικές συντομογραφίες για τα -0 και -9, αντίστοιχα. Αυτές παρέχονται μόνο για λόγους συμβατότητας με τα LZMA Utils. Αποφύγετε τη χρήση αυτών των επιλογών.

--block-size=size
Όταν συμπιέζετε σε μορφή .xz, χωρίστε τα δεδομένα εισόδου σε μπλοκ μεγέθους bytes. Τα μπλοκ συμπιέζονται ανεξάρτητα το ένα από το άλλο, γεγονός που βοηθά στην ταυτόχρονη επεξεργασία και καθιστά δυνατή την περιορισμένη τυχαία πρόσβαση στην αποσυμπίεση. Αυτή η επιλογή χρησιμοποιείται συνήθως για να παρακάμψει το προεπιλεγμένο μέγεθος μπλοκ στη λειτουργία πολλαπλών νημάτων, αλλά αυτή η επιλογή μπορεί να χρησιμοποιηθεί και στη λειτουργία ενός νήματος.

Στη λειτουργία πολλαπλών νημάτων, περίπου τριπλάσια ποσότητα byte θα διατεθεί σε κάθε νήμα για την αποθήκευση των δεδομένων εισόδου και εξόδου. Το προεπιλεγμένο μέγεθος είναι τριπλάσιο του μεγέθους του λεξικού LZMA2 ή 1MiB, όποιο είναι μεγαλύτερο. Συνήθως, μια καλή τιμή είναι 2–4 φορές το μέγεθος του λεξικού LZMA2 ή τουλάχιστον 1 MiB. Η χρήση μεγέθους μικρότερου από το μέγεθος του λεξικού LZMA2 είναι σπατάλη μνήμης διότι τότε το buffer του λεξικού LZMA2 δεν θα χρησιμοποιηθεί ποτέ πλήρως. Στη λειτουργία πολλαπλών νημάτων, τα μεγέθη των μπλοκ αποθηκεύονται στις κεφαλίδες των μπλοκ. Αυτές οι πληροφορίες μεγέθους απαιτούνται για την αποσυμπίεση σε λειτουργία πολλαπλών νημάτων.

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

--block-list=items

Όταν συμπιέζετε σε μορφή .xz, ξεκινήστε ένα νέο μπλοκ με μια προαιρετική προσαρμοσμένη αλυσίδα φίλτρων μετά από τα δεδομένα εισόδου που καθορίζονται σε συγκεκριμένα διαστήματα.

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

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

Μια εναλλακτική αλυσίδα φίλτρων για κάθε μπλοκ μπορεί να καθοριστεί σε συνδυασμό με τις επιλογές --filters1=filters ... --filters9=filters. Αυτές οι επιλογές ορίζουν αλυσίδες φίλτρων με ένα
αναγνωριστικό μεταξύ 1–9. Η αλυσίδα φίλτρων 0 μπορεί να χρησιμοποιηθεί για να αναφερθεί στην προεπιλεγμένη αλυσίδα φίλτρων,
η οποία είναι η ίδια με τη μη καθορισμένη αλυσίδα φίλτρων. Το αναγνωριστικό της αλυσίδας φίλτρων μπορεί να χρησιμοποιηθεί πριν από το μέγεθος των δεδομένων εισόδου, ακολουθούμενο από μια άνω τελεία (:). Για παράδειγμα, εάν καθορίσετε
--block-list=1:2MiB,3:2MiB,2:4MiB,,2MiB,0:4MiB, τότε τα μπλοκ θα δημιουργηθούν χρησιμοποιώντας:

Την αλυσίδα φίλτρων που καθορίζεται από την επιλογή --filters1 και 2 MiB δεδομένων εισόδου

Την αλυσίδα φίλτρων που καθορίζεται από την επιλογή --filters3 και 2 MiB δεδομένων εισόδου

Την αλυσίδα φίλτρων που καθορίζεται από την επιλογή --filters2 και 4 MiB δεδομένων εισόδου

Την αλυσίδα φίλτρων που καθορίζεται από την επιλογή --filters2 και 4 MiB δεδομένων εισόδου

Την προεπιλεγμένη αλυσίδα φίλτρων και 2 MiB δεδομένων εισόδου

Την προεπιλεγμένη αλυσίδα φίλτρων και 4 MiB δεδομένων εισόδου για κάθε μπλοκ μέχρι το τέλος των δεδομένων εισόδου.

Εάν καθορίσετε ένα μέγεθος που υπερβαίνει το μέγεθος μπλοκ του κωδικοποιητή (είτε την προεπιλεγμένη τιμή σε λειτουργία νημάτων είτε την τιμή που καθορίζεται με την επιλογή --block-size=size), ο κωδικοποιητής θα δημιουργήσει
επιπλέον μπλοκ διατηρώντας παράλληλα τα όρια που καθορίζονται στα στοιχεία. Για παράδειγμα, εάν καθορίσετε --block-size=10MiB --block-list=5MiB,10MiB,8MiB,12MiB,24MiB και το αρχείο εισόδου
είναι 80 MiB, θα λάβετε 11 μπλοκ: 5, 10, 8, 10, 2, 10, 10, 4, 10, 10 και 1 MiB.

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

--flush-timeout=χρόνος

Κατά τη συμπίεση, εάν έχουν περάσει περισσότερα από χιλιοστά του δευτερολέπτου (ένας θετικός ακέραιος αριθμός) από την τελευταία εκκαθάριση και η ανάγνωση περισσότερων εισερχόμενων δεδομένων θα προκαλούσε μπλοκάρισμα, όλα τα εκκρεμή εισερχόμενα δεδομένα εκκαθαρίζονται από τον κωδικοποιητή και διατίθενται στη ροή εξόδου. Αυτό μπορεί να είναι χρήσιμο εάν το xz χρησιμοποιείται για τη συμπίεση δεδομένων που μεταδίδονται μέσω δικτύου. Μικρές τιμές χρονικού ορίου καθιστούν τα δεδομένα διαθέσιμα στην πλευρά λήψης με μικρή καθυστέρηση, αλλά μεγάλες τιμές χρονικού ορίου παρέχουν καλύτερη αναλογία συμπίεσης.

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

Αυτή η δυνατότητα δεν είναι διαθέσιμη σε μη-POSIX συστήματα.

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

--no-sync

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

Αυτή η επιλογή έχει αποτέλεσμα μόνο όταν το xz πρόκειται να διαγράψει το αρχείο προέλευσης. Σε άλλες περιπτώσεις, η συγχρονισμός δεν πραγματοποιείται ποτέ.

Η συγχρονισμός και η επιλογή --no-sync προστέθηκαν στην έκδοση xz 5.7.1alpha.

--memlimit-compress=όριο

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

Εάν οι ρυθμίσεις συμπίεσης υπερβαίνουν το όριο, το xz θα προσπαθήσει να προσαρμόσει τις ρυθμίσεις προς τα κάτω, έτσι ώστε το όριο να μην υπερβαίνεται πλέον και θα εμφανίσει μια ειδοποίηση ότι πραγματοποιήθηκε αυτόματη προσαρμογή. Οι προσαρμογές γίνονται με την ακόλουθη σειρά: μείωση του αριθμού των νημάτων, εναλλαγή σε λειτουργία ενός νήματος εάν ακόμη και ένα νήμα στη λειτουργία πολλαπλών νημάτων υπερβαίνει το όριο και τελικά μείωση του μεγέθους του λεξικού LZMA2.

Όταν συμπιέζετε με τη μορφή --format=raw ή εάν έχει καθοριστεί η επιλογή --no-adjust, μόνο ο αριθμός των νημάτων μπορεί να μειωθεί, επειδή αυτό μπορεί να γίνει χωρίς να επηρεαστεί η συμπιεσμένη έξοδος.

Εάν το όριο δεν μπορεί να ικανοποιηθεί ακόμη και με τις προσαρμογές που περιγράφονται παραπάνω, εμφανίζεται ένα σφάλμα και το xz θα τερματιστεί με κατάσταση εξόδου 1.


Το όριο μπορεί να καθοριστεί με διάφορους τρόπους:

Το όριο μπορεί να είναι μια απόλυτη τιμή σε byte. Η χρήση μιας αριθμητικής κατάληξης όπως το MiB μπορεί να είναι χρήσιμη. Παράδειγμα: --memlimit-compress=80MiB

Το όριο μπορεί να καθοριστεί ως ποσοστό της συνολικής διαθέσιμης φυσικής μνήμης (RAM). Αυτό μπορεί να είναι χρήσιμο, ειδικά όταν ορίζετε τη μεταβλητή περιβάλλοντος XZ_DEFAULTS σε ένα σενάριο αρχικοποίησης shell που είναι κοινό σε διαφορετικούς υπολογιστές. Με αυτόν τον τρόπο, το όριο είναι αυτόματα μεγαλύτερο σε συστήματα με περισσότερη μνήμη. Παράδειγμα: --memlimit-compress=70%

Το όριο μπορεί να επαναφερθεί στην προεπιλεγμένη τιμή του ορίζοντάς το σε 0. Αυτό είναι επί του παρόντος ισοδύναμο με την ορισμένη του ορίου στη μέγιστη τιμή (χωρίς όριο χρήσης μνήμης).

Για το 32-bit xz, υπάρχει μια ειδική περίπτωση: εάν το όριο θα υπερβαίνει τα 4020 MiB, το όριο ορίζεται σε 4020 MiB. Στο MIPS32 χρησιμοποιούνται 2000 MiB. (Οι τιμές 0 και max δεν επηρεάζονται από αυτό. Μια παρόμοια λειτουργία δεν υπάρχει για την αποσυμπίεση.) Αυτό μπορεί να είναι χρήσιμο όταν ένα εκτελέσιμο αρχείο 32-bit έχει πρόσβαση σε χώρο διευθύνσεων 4 GiB (2 GiB στο MIPS32) ενώ παράλληλα ελπίζουμε να μην προκαλεί προβλήματα σε άλλες περιπτώσεις.

Δείτε επίσης την ενότητα Χρήση μνήμης.

--memlimit-decompress=limit

Ορίζει ένα όριο χρήσης μνήμης για την αποσυμπίεση. Αυτό επηρεάζει επίσης τη λειτουργία --list. Εάν η λειτουργία δεν είναι δυνατή χωρίς να υπερβεί το όριο, το xz θα εμφανίσει ένα σφάλμα και η αποσυμπίεση του αρχείου θα αποτύχει. Δείτε το --memlimit-compress=limit για πιθανούς τρόπους καθορισμού του ορίου.

--memlimit-mt-decompress=limit

Ορίζει ένα όριο χρήσης μνήμης για την αποσυμπίεση με χρήση πολλαπλών νημάτων. Αυτό μπορεί να επηρεάσει μόνο τον αριθμό των νημάτων. Δεν θα προκαλέσει ποτέ την άρνηση του xz να αποσυμπιέσει ένα αρχείο. Εάν το όριο είναι πολύ χαμηλό ώστε να επιτρέψει οποιαδήποτε χρήση πολλαπλών νημάτων, το όριο αγνοείται και το xz θα συνεχίσει σε λειτουργία με ένα μόνο νήμα. Σημειώστε ότι εάν χρησιμοποιείται επίσης το --memlimit-decompress, θα ισχύει πάντα τόσο για τη λειτουργία με ένα μόνο νήμα όσο και για τη λειτουργία με πολλά νήματα, επομένως το πραγματικό όριο για τη λειτουργία με πολλά νήματα δεν θα είναι ποτέ υψηλότερο από το όριο που έχει οριστεί με το --memlimit-decompress.

Σε αντίθεση με τις άλλες επιλογές ορίου χρήσης μνήμης, το --memlimit-mt-decompress=limit έχει ένα προεπιλεγμένο όριο συγκεκριμένο για το σύστημα. Μπορείτε να χρησιμοποιήσετε την εντολή xz --info-memory για να δείτε την τρέχουσα τιμή.

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

Δείτε το --memlimit-compress=limit για πιθανούς τρόπους καθορισμού του ορίου. Η ορισμένη του ορίου σε 0 επαναφέρει το όριο στην προεπιλεγμένη τιμή συγκεκριμένη για το σύστημα.

-M limit, --memlimit=limit, --memory=limit

Αυτό είναι ισοδύναμο με την ορισμένη των --memlimit-compress=limit --memlimit-decompress=limit --memlimit-mt-decompress=limit.


--no-adjust
Εμφανίζει ένα σφάλμα και τερματίζει την εκτέλεση εάν το όριο χρήσης μνήμης δεν μπορεί να ικανοποιηθεί χωρίς να προσαρμοστούν ρυθμίσεις που επηρεάζουν την συμπιεσμένη έξοδο. Δηλαδή, αυτό αποτρέπει την εναλλαγή του κωδικοποιητή από τη λειτουργία πολλαπλών νημάτων σε λειτουργία ενός μόνο νήματος και από τη μείωση του μεγέθους του λεξικού LZMA2. Ακόμα και όταν χρησιμοποιείται αυτή η επιλογή, ο αριθμός των νημάτων μπορεί να μειωθεί για να ικανοποιηθεί το όριο χρήσης μνήμης, καθώς αυτό δεν θα επηρεάσει την συμπιεσμένη έξοδο.

Η αυτόματη προσαρμογή απενεργοποιείται πάντα κατά τη δημιουργία ακατέργαστων ροών (--format=raw).

-T threads, --threads=threads
Καθορίζει τον αριθμό των εργατικών νημάτων που θα χρησιμοποιηθούν. Η ρύθμιση του threads σε μια ειδική τιμή 0, κάνει το xz να χρησιμοποιεί έως και τόσα νήματα όσα υποστηρίζει ο επεξεργαστής(ές) του συστήματος. Ο πραγματικός αριθμός των νημάτων μπορεί να είναι μικρότερος από το threads εάν το αρχείο εισόδου δεν είναι αρκετά μεγάλο για τη δημιουργία νημάτων με τις δεδομένες ρυθμίσεις ή εάν η χρήση περισσότερων νημάτων θα υπερβεί το όριο χρήσης μνήμης.

Οι συμπιεστές ενός και πολλαπλών νημάτων παράγουν διαφορετική έξοδο. Ο συμπιεστής ενός νήματος θα δώσει το μικρότερο μέγεθος αρχείου, αλλά μόνο η έξοδος από τον συμπιεστή πολλαπλών νημάτων μπορεί να αποσυμπιεστεί χρησιμοποιώντας πολλαπλά νήματα. Η ρύθμιση του threads σε 1 θα χρησιμοποιήσει τη λειτουργία ενός νήματος. Η ρύθμιση του threads σε οποιαδήποτε άλλη τιμή, συμπεριλαμβανομένου του 0, θα χρησιμοποιήσει τον συμπιεστή πολλαπλών νημάτων, ακόμη και αν το σύστημα υποστηρίζει μόνο ένα υλικό νήμα. (Στην έκδοση xz 2.x, χρησιμοποιούνταν η λειτουργία ενός νήματος σε αυτήν την περίπτωση).

Για να χρησιμοποιήσετε τη λειτουργία πολλαπλών νημάτων με μόνο ένα νήμα, ορίστε το threads σε +1. Το πρόθεμα + δεν έχει καμία επίδραση σε άλλες τιμές. Ένα όριο χρήσης μνήμης μπορεί ακόμη να κάνει το xz να αλλάξει σε λειτουργία ενός νήματος, εκτός εάν χρησιμοποιηθεί η επιλογή --no-adjust. Η υποστήριξη για το πρόθεμα + προστέθηκε στην έκδοση xz 5.4.0.

Εάν έχει ζητηθεί ένας αυτόματος αριθμός νημάτων και δεν έχει καθοριστεί όριο χρήσης μνήμης, τότε θα χρησιμοποιηθεί ένα ειδικό για το σύστημα προεπιλεγμένο "απαλό" όριο, το οποίο ενδέχεται να περιορίσει τον αριθμό των νημάτων. Είναι ένα "απαλό" όριο με την έννοια ότι αγνοείται εάν ο αριθμός των νημάτων γίνει ένα, επομένως ένα "απαλό" όριο δεν θα εμποδίσει ποτέ το xz από το να συμπιέσει ή να αποσυμπιέσει. Αυτό το προεπιλεγμένο "απαλό" όριο δεν θα κάνει το xz να αλλάξει από λειτουργία πολλαπλών νημάτων σε λειτουργία ενός νήματος. Τα ενεργά όρια μπορούν να προβληθούν με την εντολή xz --info-memory.

Επί του παρόντος, η μόνη μέθοδος δημιουργίας νημάτων είναι η διαίρεση της εισόδου σε μπλοκ και η ανεξάρτητη συμπίεση αυτών. Το προεπιλεγμένο μέγεθος μπλοκ εξαρτάται από το επίπεδο συμπίεσης και μπορεί να αντικατασταθεί με την επιλογή --block-size=size.

Η δημιουργία νημάτων κατά την αποσυμπίεση λειτουργεί μόνο σε αρχεία που περιέχουν πολλαπλά μπλοκ με πληροφορίες μεγέθους στις κεφαλίδες των μπλοκ. Όλα τα αρκετά μεγάλα αρχεία που συμπιέστηκαν σε λειτουργία πολλαπλών νημάτων πληρούν αυτήν την προϋπόθεση, αλλά τα αρχεία που συμπιέστηκαν σε λειτουργία ενός νήματος δεν την πληρούν, ακόμη και αν έχει χρησιμοποιηθεί η επιλογή --block-size=size.

Η προεπιλεγμένη τιμή για το threads είναι 0. Στην έκδοση xz 5.4.x και παλαιότερες, η προεπιλογή είναι 1.

Προσαρμοσμένες αλυσίδες φίλτρων συμπιεστή

Μια προσαρμοσμένη αλυσίδα φίλτρων επιτρέπει τον καθορισμό των ρυθμίσεων συμπίεσης λεπτομερώς, αντί να βασίζεται στις ρυθμίσεις που σχετίζονται με τις προκαθορισμένες τιμές. Όταν καθορίζεται μια προσαρμοσμένη αλυσίδα φίλτρων, οι επιλογές προκαθορισμένων τιμών (-0 ... -9 και --extreme) που καθορίζονται νωρίτερα στη γραμμή εντολών παραβλέπονται. Εάν μια επιλογή προκαθορισμένης τιμής καθοριστεί μετά από μία ή περισσότερες επιλογές προσαρμοσμένης αλυσίδας φίλτρων, η νέα προκαθορισμένη τιμή θα τεθεί σε ισχύ και οι επιλογές προσαρμοσμένης αλυσίδας φίλτρων που καθορίστηκαν νωρίτερα θα παραβλεφθούν.

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

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

Μια προσαρμοσμένη αλυσίδα φίλτρων μπορεί να καθοριστεί με δύο διαφορετικούς τρόπους. Οι επιλογές `--filters=filters` και `--filters1=filters ... --filters9=filters` επιτρέπουν τον καθορισμό μιας ολόκληρης αλυσίδας φίλτρων σε μία επιλογή χρησιμοποιώντας τη σύνταξη συμβολοσειράς φίλτρων liblzma. Εναλλακτικά, μια αλυσίδα φίλτρων μπορεί να καθοριστεί χρησιμοποιώντας μία ή περισσότερες μεμονωμένες επιλογές φίλτρου με τη σειρά που επιθυμείτε στην αλυσίδα φίλτρων. Δηλαδή, η σειρά των μεμονωμένων επιλογών φίλτρων είναι σημαντική! Όταν αποκωδικοποιούνται ακατέργαστες ροές (`--format=raw`), η αλυσίδα φίλτρων πρέπει να καθοριστεί με την ίδια σειρά που καθορίστηκε κατά τη συμπίεση. Οποιεσδήποτε μεμονωμένες επιλογές φίλτρων ή προεπιλογές που καθορίζονται πριν από την πλήρη επιλογή αλυσίδας (`--filters=filters`) θα διαγραφούν. Οι μεμονωμένες επιλογές φίλτρων που καθορίζονται μετά την πλήρη επιλογή αλυσίδας θα επαναφέρουν την αλυσίδα φίλτρων.

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

Για να δείτε ολόκληρη την αλυσίδα φίλτρων και τις επιλογές, χρησιμοποιήστε `xz -vv` (δηλαδή, χρησιμοποιήστε `--verbose` δύο φορές). Αυτό λειτουργεί επίσης για την προβολή των επιλογών της αλυσίδας φίλτρων που χρησιμοποιούνται από τις προεπιλογές.

`--filters=filters`
Καθορίστε την πλήρη αλυσίδα φίλτρων ή μια προεπιλογή σε μία επιλογή. Κάθε φίλτρο μπορεί να διαχωριστεί με κενά ή δύο παύλες (`--`). Το `filters` ενδέχεται να χρειαστεί να εισαχθεί σε εισαγωγικά στη γραμμή εντολών του κελύφους, ώστε να αναλυθεί ως μία ενιαία επιλογή. Για να υποδείξετε επιλογές, χρησιμοποιήστε `:` ή `=`. Μια προεπιλογή μπορεί να προστεθεί με `-` και ακολουθείται από μηδέν ή περισσότερες σημαίες. Η μόνη υποστηριζόμενη σημαία είναι `e` για να εφαρμοστούν οι ίδιες επιλογές όπως με την `--extreme`.

`--filters1=filters ... --filters9=filters`
Καθορίστε έως και εννέα πρόσθετες αλυσίδες φίλτρων που μπορούν να χρησιμοποιηθούν με την `--block-list`.

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

--filters-help
Εμφανίζει ένα μήνυμα βοήθειας που περιγράφει τον τρόπο καθορισμού προκαθορισμένων ρυθμίσεων και προσαρμοσμένων αλυσίδων φίλτρων στις επιλογές --filters και --filters1=filters ... --filters9=filters και εξέρχεται με επιτυχία.

--lzma1[=options]
--lzma2[=options]
Προσθέτει φίλτρο LZMA1 ή LZMA2 στην αλυσίδα φίλτρων. Αυτά τα φίλτρα μπορούν να χρησιμοποιηθούν μόνο ως το τελευταίο φίλτρο στην αλυσίδα.

Το LZMA1 είναι ένα παλαιότερο φίλτρο, το οποίο υποστηρίζεται σχεδόν αποκλειστικά λόγω της παλαιάς μορφής αρχείου .lzma, η οποία υποστηρίζει μόνο το LZMA1. Το LZMA2 είναι μια ενημερωμένη έκδοση του LZMA1 για την επίλυση ορισμένων πρακτικών προβλημάτων του LZMA1. Η μορφή .xz χρησιμοποιεί το LZMA2 και δεν υποστηρίζει το LZMA1. Οι ταχύτητες συμπίεσης και οι αναλογίες του LZMA1 και του LZMA2 είναι πρακτικά οι ίδιες.

Τα LZMA1 και LZMA2 μοιράζονται το ίδιο σύνολο επιλογών:

preset=preset
Επαναφέρει όλες τις επιλογές LZMA1 ή LZMA2 στην προκαθορισμένη τιμή. Η προκαθορισμένη τιμή αποτελείται από έναν ακέραιο αριθμό, ο οποίος μπορεί να ακολουθείται από τροποποιητές προκαθορισμένης τιμής ενός χαρακτήρα. Ο ακέραιος αριθμός μπορεί να είναι από 0 έως 9, που αντιστοιχεί στις επιλογές γραμμής εντολών -0 ... -9. Ο μόνος υποστηριζόμενος τροποποιητής είναι επί του παρόντος το e, το οποίο αντιστοιχεί στην επιλογή --extreme. Εάν δεν καθοριστεί προκαθορισμένη τιμή, οι προεπιλεγμένες τιμές των επιλογών LZMA1 ή LZMA2 λαμβάνονται από την προκαθορισμένη τιμή 6.

dict=size
Το μέγεθος του λεξικού (buffer ιστορικού) υποδεικνύει πόσα byte των πρόσφατα επεξεργασμένων μη συμπιεσμένων δεδομένων διατηρούνται στη μνήμη. Ο αλγόριθμος προσπαθεί να βρει επαναλαμβανόμενες ακολουθίες byte στα μη συμπιεσμένα δεδομένα και να τις αντικαταστήσει με αναφορές στα δεδομένα που υπάρχουν επί του παρόντος στο λεξικό. Όσο μεγαλύτερο είναι το λεξικό, τόσο μεγαλύτερη είναι η πιθανότητα εύρεσης μιας αντιστοιχίας. Επομένως, η αύξηση του μεγέθους του λεξικού βελτιώνει συνήθως την αναλογία συμπίεσης, αλλά ένα λεξικό μεγαλύτερο από το μη συμπιεσμένο αρχείο είναι σπατάλη μνήμης.

Ένα τυπικό μέγεθος λεξικού είναι από 64 KiB έως 64 MiB. Το ελάχιστο είναι 4 KiB. Το μέγιστο για συμπίεση είναι επί του παρόντος 1,5 GiB (1536 MiB). Ο αποσυμπιεστής υποστηρίζει ήδη λεξικά κατά ένα byte μικρότερα από 4 GiB, το οποίο είναι το μέγιστο για τις μορφές ροής LZMA1 και LZMA2.

Το μέγεθος του λεξικού και ο αλγόριθμος ανίχνευσης αντιστοιχιών (mf) καθορίζουν από κοινού τη χρήση μνήμης του κωδικοποιητή LZMA1 ή LZMA2. Το ίδιο (ή μεγαλύτερο) μέγεθος λεξικού απαιτείται για την αποσυμπίεση, όπως χρησιμοποιήθηκε κατά τη συμπίεση, έτσι η χρήση μνήμης του αποκωδικοποιητή καθορίζεται από το μέγεθος του λεξικού που χρησιμοποιήθηκε κατά τη συμπίεση. Οι κεφαλίδες .xz αποθηκεύουν το μέγεθος του λεξικού είτε ως 2^n είτε ως 2^n + 2^(n-1), έτσι αυτά τα μεγέθη προτιμώνται κατά τη συμπίεση. Άλλα μεγέθη θα στρογγυλοποιηθούν προς τα πάνω κατά την αποθήκευση στις κεφαλίδες .xz.

lc=lc Καθορίστε τον αριθμό των bit περιεχομένου. Το ελάχιστο είναι 0 και το μέγιστο είναι 4. η προεπιλεγμένη τιμή είναι 3. Επιπλέον, το άθροισμα των lc και lp δεν πρέπει να υπερβαίνει το 4.

Όλα τα byte που δεν μπορούν να κωδικοποιηθούν ως αντιστοιχίες κωδικοποιούνται ως γράμματα. Δηλαδή, τα γράμματα είναι απλά byte 8-bit που κωδικοποιούνται ένα προς ένα.

Η κωδικοποίηση γραμμάτων υποθέτει ότι τα υψηλότερα lc bit του προηγούμενου μη συμπιεσμένου byte σχετίζονται με το επόμενο byte. Για παράδειγμα, σε ένα τυπικό αγγλικό κείμενο, ένα κεφαλαίο γράμμα ακολουθείται συχνά από ένα μικρό γράμμα και ένα μικρό γράμμα ακολουθείται συνήθως από ένα άλλο μικρό γράμμα. Στο σύνολο χαρακτήρων US-ASCII, τα τρία υψηλότερα bit είναι 010 για τα κεφαλαία γράμματα και 011 για τα μικρά γράμματα. Όταν το lc είναι τουλάχιστον 3, η κωδικοποίηση γραμμάτων μπορεί να επωφεληθεί από αυτήν την ιδιότητα στα μη συμπιεσμένα δεδομένα.

Η προεπιλεγμένη τιμή (3) είναι συνήθως καλή. Εάν θέλετε μέγιστη συμπίεση, δοκιμάστε το lc=4. Μερικές φορές βοηθάει λίγο και μερικές φορές χειροτερεύει τη συμπίεση. Εάν το χειροτερεύει, δοκιμάστε επίσης το lc=2.

lp=lp Καθορίστε τον αριθμό των bit θέσης του κυριολεκτικού. Το ελάχιστο είναι 0 και το μέγιστο είναι 4, η προεπιλογή είναι 0.

Το Lp επηρεάζει τον τύπο της ευθυγράμμισης στα μη συμπιεσμένα δεδομένα που υποτίθεται κατά την κωδικοποίηση των κυριολεκτικών. Δείτε το pb παρακάτω για περισσότερες πληροφορίες σχετικά με την ευθυγράμμιση.

pb=pb Καθορίστε τον αριθμό των bit θέσης. Το ελάχιστο είναι 0 και το μέγιστο είναι 4. η προεπιλογή είναι 2.

Το Pb επηρεάζει τον τύπο της ευθυγράμμισης στα μη συμπιεσμένα δεδομένα που υποτίθεται γενικά. Η προεπιλογή σημαίνει ευθυγράμμιση τεσσάρων byte (2^pb=2^2=4), η οποία είναι συχνά μια καλή επιλογή όταν δεν υπάρχει καλύτερη υπόθεση.

Όταν η ευθυγράμμιση είναι γνωστή, η ρύθμισή της στο Pb μπορεί να μειώσει ελαφρώς το μέγεθος του αρχείου. Για παράδειγμα, για αρχεία κειμένου με ευθυγράμμιση ενός byte (US-ASCII, ISO-8859-*, UTF-8), η ρύθμιση του pb=0 μπορεί να βελτιώσει ελαφρώς τη συμπίεση. Για κείμενο UTF-16, το pb=1 είναι μια καλή επιλογή. Εάν η ευθυγράμμιση είναι ένας περιττός αριθμός, όπως 3 byte, το pb=0 μπορεί να είναι η καλύτερη επιλογή.

Ακόμα και αν η υποτιθέμενη ευθυγράμμιση μπορεί να ρυθμιστεί με τα pb και lp, τα LZMA1 και LZMA2 εξακολουθούν να ευνοούν ελαφρώς την ευθυγράμμιση των 16 byte. Μπορεί να αξίζει να το λάβετε υπόψη όταν σχεδιάζετε μορφές αρχείων που είναι πιθανό να συμπιέζονται συχνά με το LZMA1 ή το LZMA2.

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

Η προεπιλογή εξαρτάται από την προκαθορισμένη ρύθμιση: το 0 χρησιμοποιεί το hc3, το 1–3 χρησιμοποιεί το hc4 και τα υπόλοιπα χρησιμοποιούν το bt4.

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

hc3 Αλυσίδα κατακερματισμού με κατακερματισμό 2 και 3 byte

Ελάχιστη τιμή για το nice: 3 Χρήση μνήμης: dict * 7,5 (εάν dict <= 16 MiB). dict * 5,5 + 64 MiB (εάν dict > 16 MiB)

hc4 Αλυσίδα κατακερματισμού με κατακερματισμό 2, 3 και 4 byte

Ελάχιστη τιμή για το nice: 4 Χρήση μνήμης: dict * 7,5 (εάν dict <= 32 MiB). dict * 6,5 (εάν dict > 32 MiB)

bt2 Δυαδικό δένδρο με κατακερματισμό 2 byte

Ελάχιστη τιμή για το nice: 2 Χρήση μνήμης: dict * 9,5

bt3 Δυαδικό δένδρο με κατακερματισμό 2 και 3 byte

Ελάχιστη τιμή για το nice: 3 Χρήση μνήμης: dict * 11,5 (εάν dict <= 16 MiB). dict * 9,5 + 64 MiB (εάν dict > 16 MiB)

bt4 Δυαδικό δένδρο με κατακερματισμό 2, 3 και 4 byte

Ελάχιστη τιμή για το nice: 4 Χρήση μνήμης: dict * 11,5 (εάν dict <= 32 MiB). dict * 10,5 (εάν dict > 32 MiB)


mode=mode

Η επιλογή συμπίεσης mode καθορίζει τη μέθοδο ανάλυσης των δεδομένων που παράγονται από την ανίχνευση αντιστοιχιών. Οι υποστηριζόμενες λειτουργίες είναι fast και normal. Η προεπιλογή είναι fast για τις προεπιλογές 0–3 και normal για τις προεπιλογές 4–9.

Συνήθως, η επιλογή fast χρησιμοποιείται με ανιχνευτές αντιστοιχιών αλυσίδας κατακερματισμού (Hash Chain) και η normal με ανιχνευτές αντιστοιχιών δυαδικού δένδρου (Binary Tree). Αυτό ισχύει επίσης και για τις προεπιλογές.

nice=nice

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

Το nice μπορεί να είναι από 2 έως 273 byte. Οι υψηλότερες τιμές τείνουν να παρέχουν καλύτερη αναλογία συμπίεσης σε βάρος της ταχύτητας. Η προεπιλογή εξαρτάται από την προεπιλογή.

depth=depth

Καθορίστε τη μέγιστη βάθος αναζήτησης στον ανιχνευτή αντιστοιχιών. Η προεπιλογή είναι η ειδική τιμή 0, η οποία κάνει τον συμπιεστή να καθορίζει ένα εύλογο βάθος από τις τιμές mf και nice.

Ένα εύλογο βάθος για τις αλυσίδες κατακερματισμού είναι 4–100 και 16–1000 για τα δυαδικά δένδρα. Η χρήση πολύ υψηλών τιμών για το depth μπορεί να κάνει τον κωδικοποιητή εξαιρετικά αργό για ορισμένα αρχεία. Αποφύγετε να ορίσετε το depth πάνω από 1000, εκτός εάν είστε προετοιμασμένοι να διακόψετε τη συμπίεση σε περίπτωση που χρειάζεται υπερβολικά πολύς χρόνος.

Κατά την αποκωδικοποίηση ακατέργαστων ροών (--format=raw), το LZMA2 χρειάζεται μόνο το μέγεθος του λεξικού. Το LZMA1 χρειάζεται επίσης τις τιμές lc, lp και pb.

--x86[=options]
--arm[=options]
--armthumb[=options]
--arm64[=options]
--powerpc[=options]
--ia64[=options]
--sparc[=options]
--riscv[=options]

Προσθέστε ένα φίλτρο διακλάδωσης/κλήσης/αλτήματος (BCJ) στην αλυσίδα φίλτρων. Αυτά τα φίλτρα μπορούν να χρησιμοποιηθούν μόνο ως μη τελευταία φίλτρα στην αλυσίδα φίλτρων.

Ένα φίλτρο BCJ μετατρέπει τις σχετικές διευθύνσεις στον κώδικα μηχανής στις απόλυτες αντίστοιχές τους. Αυτό δεν αλλάζει το μέγεθος των δεδομένων, αλλά αυξάνει την ομοιότητα, γεγονός που μπορεί να βοηθήσει το LZMA2 να παράγει αρχεία .xz που είναι 0–15% μικρότερα. Τα φίλτρα BCJ είναι πάντα αναστρέψιμα, επομένως η χρήση ενός φίλτρου BCJ για τον λανθασμένο τύπο δεδομένων δεν προκαλεί απώλεια δεδομένων, αν και μπορεί να κάνει την αναλογία συμπίεσης ελαφρώς χειρότερη. Τα φίλτρα BCJ είναι πολύ γρήγορα και χρησιμοποιούν αμελητέα ποσότητα μνήμης.

Αυτά τα φίλτρα BCJ έχουν γνωστά προβλήματα που σχετίζονται με την αναλογία συμπίεσης:

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

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

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


Φίλτρο Ευθυγράμμιση Σημειώσεις x86 1 32-bit ή 64-bit x86 ARM 4 ARM-Thumb 2 ARM64 4 Η ευθυγράμμιση των 4096 byte είναι η καλύτερη PowerPC 4 Μόνο big endian IA-64 16 Itanium SPARC 4 RISC-V 2

Επειδή τα δεδομένα που φιλτράρονται από το BCJ συνήθως συμπιέζονται με το LZMA2, ο λόγος συμπίεσης μπορεί να βελτιωθεί ελαφρώς εάν οι επιλογές του LZMA2 έχουν ρυθμιστεί ώστε να ταιριάζουν με την ευθυγράμμιση του επιλεγμένου φίλτρου BCJ. Παραδείγματα:

Το φίλτρο IA-64 έχει ευθυγράμμιση 16 byte, επομένως το pb=4,lp=4,lc=0 είναι καλό με το LZMA2 (2^4=16).

Ο κώδικας RISC-V έχει ευθυγράμμιση 2 byte ή 4 byte ανάλογα με το αν το αρχείο περιέχει 16-bit συμπιεσμένες εντολές (η επέκταση C). Όταν χρησιμοποιούνται 16-bit εντολές, το pb=2,lp=1,lc=3 ή το pb=1,lp=1,lc=3 είναι καλό. Όταν δεν υπάρχουν 16-bit εντολές, το pb=2,lp=2,lc=2 είναι το καλύτερο. Μπορείτε να χρησιμοποιήσετε την εντολή readelf -h για να ελέγξετε αν το "RVC" εμφανίζεται στη γραμμή "Flags".

Το ARM64 είναι πάντα ευθυγραμμισμένο σε 4 byte, επομένως το pb=2,lp=2,lc=2 είναι το καλύτερο.

Το φίλτρο x86 είναι η εξαίρεση. Συνήθως είναι καλό να τηρούνται οι προεπιλεγμένες ρυθμίσεις του LZMA2 (pb=2,lp=0,lc=3) κατά τη συμπίεση εκτελέσιμων αρχείων x86.

Όλα τα φίλτρα BCJ υποστηρίζουν τις ίδιες επιλογές:

start=offset

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

--delta[=options]

Προσθέστε το φίλτρο Delta στην αλυσίδα φίλτρων. Το φίλτρο Delta μπορεί να χρησιμοποιηθεί μόνο ως μη τελευταίο φίλτρο στην αλυσίδα φίλτρων.

Επί του παρόντος, υποστηρίζεται μόνο η απλή υπολογιστική διαφορά byte προς byte. Μπορεί να είναι χρήσιμο κατά τη συμπίεση, για παράδειγμα, μη συμπιεσμένων εικόνων bitmap ή μη συμπιεσμένου ήχου PCM. Ωστόσο, ειδικοί αλγόριθμοι μπορεί να δώσουν σημαντικά καλύτερα αποτελέσματα από το Delta + LZMA2. Αυτό ισχύει ιδιαίτερα για τον ήχο, ο οποίος συμπιέζεται γρηγορότερα και καλύτερα, για παράδειγμα, με το flac(1).

Υποστηριζόμενες επιλογές:

dist=distance

Καθορίστε την απόσταση του υπολογισμού της διαφοράς σε byte. Η απόσταση πρέπει να είναι 1–256. Η προεπιλογή είναι 1.

Για παράδειγμα, με dist=2 και οκτα-byte είσοδο A1 B1 A2 B3 A3 B5 A4 B7, η έξοδος θα είναι A1 B1 01 02 01 02 01 02.

Άλλες επιλογές

-q, --quiet

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

-v, --verbose

Να είστε λεπτομερείς. Εάν η τυπική έξοδος είναι συνδεδεμένη σε ένα τερματικό, το xz θα εμφανίσει μια ένδειξη προόδου. Η καθορισμένη της επιλογής --verbose δύο φορές θα δώσει ακόμη πιο λεπτομερή έξοδο.

Η ένδειξη προόδου δείχνει τις ακόλουθες πληροφορίες:

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


Ποσότητα συμπιεσμένων δεδομένων που παράγονται (κατά τη συμπίεση) ή καταναλώνονται (κατά την αποσυμπίεση).

Ποσότητα μη συμπιεσμένων δεδομένων που καταναλώνονται (κατά τη συμπίεση) ή παράγονται (κατά την αποσυμπίεση).

Λόγος συμπίεσης, ο οποίος υπολογίζεται διαιρώντας την ποσότητα των συμπιεσμένων δεδομένων που έχουν υποβληθεί σε επεξεργασία μέχρι στιγμής με την ποσότητα των μη συμπιεσμένων δεδομένων που έχουν υποβληθεί σε επεξεργασία μέχρι στιγμής.

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

Ελεγχόμενος χρόνος, στην μορφή Μ:ΔΔ ή Η:ΛΛ:ΔΔ.

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

Όταν η τυπική έξοδος δεν είναι τερματικό, η επιλογή --verbose θα κάνει το xz να εκτυπώνει το όνομα του αρχείου, το μέγεθος του συμπιεσμένου αρχείου, το μέγεθος του μη συμπιεσμένου αρχείου, τον λόγο συμπίεσης και ενδεχομένως επίσης την ταχύτητα και τον ελεγχόμενο χρόνο στην τυπική έξοδο μετά τη συμπίεση ή την αποσυμπίεση του αρχείου. Η ταχύτητα και ο ελεγχόμενος χρόνος περιλαμβάνονται μόνο όταν η λειτουργία διήρκεσε τουλάχιστον μερικά δευτερόλεπτα. Εάν η λειτουργία δεν ολοκληρώθηκε, για παράδειγμα λόγω διακοπής από τον χρήστη, εκτυπώνεται επίσης το ποσοστό ολοκλήρωσης, εάν είναι γνωστό το μέγεθος του αρχείου εισόδου.

-Q, --no-warn
Μην ορίζετε την τιμή εξόδου σε 2, ακόμη και αν ανιχνευθεί μια κατάσταση που αξίζει προειδοποίηση. Αυτή η επιλογή δεν επηρεάζει την ρύθμιση της αναλυτικότητας, επομένως τόσο η επιλογή --quiet όσο και η επιλογή --no-warn πρέπει να χρησιμοποιηθούν για να μην εμφανίζονται προειδοποιήσεις και για να μην αλλάξει η τιμή εξόδου.

--robot
Εκτυπώστε μηνύματα σε μορφή που μπορεί να αναλυθεί από μηχανές. Αυτό προορίζεται για να διευκολύνει τη δημιουργία διεπαφών που θέλουν να χρησιμοποιήσουν το xz αντί της liblzma, κάτι που μπορεί να συμβεί με διάφορα σενάρια. Η έξοδος με αυτήν την επιλογή ενεργοποιημένη προορίζεται να είναι σταθερή στις εκδόσεις του xz. Δείτε την ενότητα ΛΕΙΤΟΥΡΓΙΑ ROBOT για λεπτομέρειες.

--info-memory
Εμφανίστε, σε μορφή εύκολη στην ανάγνωση, πόση φυσική μνήμη (RAM) και πόσα νήματα επεξεργαστή πιστεύει ότι διαθέτει το σύστημα το xz και τα όρια χρήσης μνήμης για συμπίεση και αποσυμπίεση, και τερματίστε με επιτυχία.

-h, --help
Εμφανίστε ένα μήνυμα βοήθειας που περιγράφει τις πιο συχνά χρησιμοποιούμενες επιλογές και τερματίστε με επιτυχία.

-H, --long-help
Εμφανίστε ένα μήνυμα βοήθειας που περιγράφει όλες τις δυνατότητες του xz και τερματίστε με επιτυχία.

-V, --version
Εμφανίστε τον αριθμό έκδοσης του xz και της liblzma σε μορφή εύκολη στην ανάγνωση. Για να λάβετε έξοδο που μπορεί να αναλυθεί από μηχανές, καθορίστε την επιλογή --robot πριν από την επιλογή --version.

ΛΕΙΤΟΥΡΓΙΑ ROBOT

Η λειτουργία robot ενεργοποιείται με την επιλογή --robot. Κάνει την έξοδο του xz ευκολότερη στην ανάλυση από άλλα προγράμματα. Επί του παρόντος, η επιλογή --robot υποστηρίζεται μόνο μαζί με τις επιλογές --list, --filters-help, --info-memory και --version. Θα υποστηρίζεται για συμπίεση και αποσυμπίεση στο μέλλον.

Λειτουργία λίστας

Η επιλογή xz --robot --list χρησιμοποιεί έξοδο διαχωρισμένη με καρτέλες. Η πρώτη στήλη κάθε γραμμής έχει μια συμβολοσειρά που υποδεικνύει τον τύπο των πληροφοριών που βρίσκονται σε αυτήν τη γραμμή:


name   Αυτή είναι πάντα η πρώτη γραμμή κατά την εμφάνιση των πληροφοριών ενός αρχείου. Η δεύτερη στήλη στη γραμμή
είναι το όνομα του αρχείου.

file   Αυτή η γραμμή περιέχει γενικές πληροφορίες σχετικά με το αρχείο .xz. Αυτή η γραμμή εκτυπώνεται πάντα
μετά τη γραμμή name.

stream Αυτός ο τύπος γραμμής χρησιμοποιείται μόνο όταν καθορίστηκε η επιλογή --verbose. Υπάρχουν τόσες γραμμές stream
όσες είναι και οι ροές στο αρχείο .xz.

block Αυτός ο τύπος γραμμής χρησιμοποιείται μόνο όταν καθορίστηκε η επιλογή --verbose. Υπάρχουν τόσες γραμμές block
όσες είναι και οι μπλοκ στο αρχείο .xz. Οι γραμμές block εμφανίζονται μετά από όλες τις γραμμές stream· οι διαφορετικοί τύποι γραμμών δεν διαλέγονται.

summary
Αυτός ο τύπος γραμμής χρησιμοποιείται μόνο όταν η επιλογή --verbose καθορίστηκε δύο φορές. Αυτή η γραμμή εκτυπώνεται μετά από όλες τις γραμμές block. Όπως και η γραμμή file, η γραμμή summary περιέχει γενικές πληροφορίες
σχετικά με το αρχείο .xz.

totals Αυτή είναι πάντα η τελευταία γραμμή στην έξοδο. Εμφανίζει τις συνολικές τιμές και
τα μεγέθη.

Οι στήλες των γραμμών file:

Αριθμός ροών στο αρχείο

Συνολικός αριθμός μπλοκ στις ροές

Συμπιεσμένο μέγεθος του αρχείου

Αποσυμπιεσμένο μέγεθος του αρχείου

Λόγος συμπίεσης, για παράδειγμα, 0,123. Εάν ο λόγος είναι μεγαλύτερος από 9,999, εμφανίζονται τρεις παύλες (---)

αντί για τον λόγο.

Λίστα ονομάτων ελέγχου ακεραιότητας, χωρισμένη με κόμματα. Χρησιμοποιούνται οι ακόλουθες συμβολοσειρές για τους

γνωστούς τύπους ελέγχου: None, CRC32, CRC64 και SHA-256. Για άγνωστους τύπους ελέγχου, χρησιμοποιείται η συμβολοσειρά Unknown-N, όπου το N είναι το Check ID ως δεκαδικός αριθμός (ένας ή δύο ψηφίοι).

Συνολικό μέγεθος της συμπλήρωσης ροής στο αρχείο

Οι στήλες των γραμμών stream: ### Αριθμός ροής (η πρώτη ροή είναι η 1) ### Αριθμός μπλοκ στη ροή ### Συμπιεσμένη μετατόπιση έναρξης ### Αποσυμπιεσμένη μετατόπιση έναρξης ### Συμπιεσμένο μέγεθος (δεν περιλαμβάνεται η συμπλήρωση ροής) ### Αποσυμπιεσμένο μέγεθος ### Λόγος συμπίεσης ### Όνομα του ελέγχου ακεραιότητας Μέγεθος της συμπλήρωσης ροής

Οι στήλες των γραμμών block: ### Αριθμός της ροής που περιέχει αυτό το μπλοκ ### Αριθμός μπλοκ σε σχέση με την αρχή της ροής (το πρώτο μπλοκ είναι το 1) ### Αριθμός μπλοκ σε σχέση με την αρχή του αρχείου ### Συμπιεσμένη μετατόπιση έναρξης σε σχέση με την αρχή του αρχείου ### Αποσυμπιεσμένη μετατόπιση έναρξης σε σχέση με την αρχή του αρχείου ### Συνολικό συμπιεσμένο μέγεθος του μπλοκ (περιλαμβάνονται οι κεφαλίδες) ### Αποσυμπιεσμένο μέγεθος ### Λόγος συμπίεσης Όνομα του ελέγχου ακεραιότητας

Εάν η επιλογή --verbose καθορίστηκε δύο φορές, περιλαμβάνονται πρόσθετες στήλες στις γραμμές block. Αυτές δεν εμφανίζονται με μια μόνο επιλογή --verbose, επειδή η λήψη αυτών των πληροφοριών απαιτεί πολλές μετακινήσεις και μπορεί επομένως να είναι αργή: Τιμή του ελέγχου ακεραιότητας σε δεκαεξαδική μορφή Μέγεθος της κεφαλίδας του μπλοκ Σημαίες μπλοκ: το c υποδεικνύει ότι το συμπιεσμένο μέγεθος είναι παρόν και το u υποδεικνύει ότι το αποσυμπιεσμένο μέγεθος είναι παρόν. Εάν η σημαία δεν έχει οριστεί, εμφανίζεται μια παύλα (-) για να διατηρηθεί σταθερό το μήκος της συμβολοσειράς. Μπορούν να προστεθούν νέες σημαίες στο τέλος της συμβολοσειράς στο μέλλον. Μέγεθος των πραγματικών συμπιεσμένων δεδομένων στο μπλοκ (αυτό δεν περιλαμβάνει την κεφαλίδα του μπλοκ, τη συμπλήρωση μπλοκ και τα πεδία ελέγχου) Ποσό μνήμης (σε byte) που απαιτείται για την αποσυμπίεση αυτού του μπλοκ με αυτήν την έκδοση του xz Αλυσίδα φίλτρων. Σημειώστε ότι οι περισσότερες από τις επιλογές που χρησιμοποιούνται κατά τη συμπίεση δεν μπορούν να είναι γνωστές, διότι μόνο οι επιλογές που απαιτούνται για την αποσυμπίεση αποθηκεύονται στις κεφαλίδες του αρχείου .xz.


Οι στήλες των γραμμών περίληψης: ### Ποσότητα μνήμης (σε byte) που απαιτείται για την αποσυμπίεση αυτού του αρχείου με αυτήν την έκδοση του xz ναι ή όχι, υποδεικνύοντας εάν όλοι οι κεφαλίδες μπλοκ έχουν τόσο το συμπιεσμένο μέγεθος όσο και το μη συμπιεσμένο μέγεθος αποθηκευμένο σε αυτές Από την έκδοση xz 5.1.2alpha: ### Ελάχιστη απαιτούμενη έκδοση xz για την αποσυμπίεση του αρχείου

Οι στήλες της γραμμής συνολικών: ### Αριθμός ροών ### Αριθμός μπλοκ ### Συμπιεσμένο μέγεθος ### Μη συμπιεσμένο μέγεθος ### Μέση αναλογία συμπίεσης ### Λίστα με κόμματα διαχωρισμένων ονομάτων ελέγχων ακεραιότητας που ήταν παρόντα στα αρχεία ### Μέγεθος συμπλήρωσης ροής ### Αριθμός αρχείων. Αυτό είναι εδώ για να διατηρηθεί η σειρά των προηγούμενων στηλών ίδια με αυτή στις γραμμές αρχείων.

Εάν καθορίστηκε η επιλογή --verbose δύο φορές, συμπεριλαμβάνονται επιπλέον στήλες στη γραμμή συνολικών: Μέγιστη ποσότητα μνήμης (σε byte) που απαιτείται για την αποσυμπίεση των αρχείων με αυτήν την έκδοση του xz ναι ή όχι, υποδεικνύοντας εάν όλοι οι κεφαλίδες μπλοκ έχουν τόσο το συμπιεσμένο μέγεθος όσο και το μη συμπιεσμένο μέγεθος αποθηκευμένο σε αυτές Από την έκδοση xz 5.1.2alpha: Ελάχιστη απαιτούμενη έκδοση xz για την αποσυμπίεση του αρχείου

Οι μελλοντικές εκδόσεις μπορεί να προσθέσουν νέους τύπους γραμμών και νέες στήλες μπορούν να προστεθούν στους υπάρχοντες τύπους γραμμών, αλλά οι υπάρχουσες στήλες δεν θα αλλάξουν.

Βοήθεια φίλτρων

Η εντολή xz --robot --filters-help εκτυπώνει τα υποστηριζόμενα φίλτρα στην ακόλουθη μορφή:

filter:option=<τιμή>,option=<τιμή>...

filter Όνομα φίλτρου

option Όνομα μιας επιλογής ειδικής για το φίλτρο

value Οι αριθμητικές τιμές εμφανίζονται ως <ελάχ-μέγ>. Οι επιλογές τιμών συμβολοσειρών εμφανίζονται μέσα σε < > και διαχωρίζονται με το χαρακτήρα |.

Κάθε φίλτρο εκτυπώνεται σε μια ξεχωριστή γραμμή.

###    Πληροφορίες σχετικά με το όριο μνήμης
Η εντολή xz --robot --info-memory εκτυπώνει μια μόνο γραμμή με πολλές στήλες που διαχωρίζονται με καρτέλες:

###          Συνολική ποσότητα φυσικής μνήμης (RAM) σε byte.

###          Όριο χρήσης μνήμης για συμπίεση σε byte (--memlimit-compress). Μια ειδική τιμή 0 υποδεικνύει την προεπιλεγμένη ρύθμιση, η οποία για λειτουργία με ένα νήμα είναι η ίδια με την έλλειψη ορίου.

###          Όριο χρήσης μνήμης για αποσυμπίεση σε byte (--memlimit-decompress). Μια ειδική τιμή 0 υποδεικνύει την προεπιλεγμένη ρύθμιση, η οποία για λειτουργία με ένα νήμα είναι η ίδια με την έλλειψη ορίου.

###          Από την έκδοση xz 5.3.4alpha: Χρήση μνήμης για αποσυμπίεση πολλαπλών νημάτων σε byte (--memlimit-mt-decompress). Αυτό δεν είναι ποτέ μηδέν επειδή χρησιμοποιείται μια ειδική για το σύστημα προεπιλεγμένη τιμή που εμφανίζεται στην στήλη 5 εάν δεν έχει καθοριστεί ρητά ένα όριο. Αυτό δεν είναι ποτέ μεγαλύτερο από την τιμή στην στήλη 3, ακόμη και αν έχει καθοριστεί μια μεγαλύτερη τιμή με την επιλογή --memlimit-mt-decompress.

### Από την έκδοση xz 5.3.4alpha: Ένα προκαθορισμένο όριο χρήσης μνήμης, συγκεκριμένο για το σύστημα, το οποίο χρησιμοποιείται για να περιορίσει τον αριθμό των threads κατά τη συμπίεση με αυτόματο αριθμό threads (--threads=0) και χωρίς να έχει καθοριστεί όριο χρήσης μνήμης (--memlimit-compress). Αυτό χρησιμοποιείται επίσης ως η προεπιλεγμένη τιμή για το --memlimit-mt-decompress.

### Από την έκδοση xz 5.3.4alpha: Αριθμός διαθέσιμων threads επεξεργαστή.

Στο μέλλον, η έξοδος της εντολής xz --robot --info-memory μπορεί να έχει περισσότερες στήλες, αλλά ποτέ όχι περισσότερες από μία γραμμή.

Έκδοση

Η εντολή xz --robot --version εμφανίζει τον αριθμό έκδοσης του xz και του liblzma στην ακόλουθη μορφή:

XZ_VERSION=XYYYZZZS
LIBLZMA_VERSION=XYYYZZZS

X      Κύρια έκδοση.

YYY    Δευτερεύουσα έκδοση. Οι άρτιοι αριθμοί είναι σταθεροί. Οι περιττοί αριθμοί είναι εκδόσεις alpha ή beta.

ZZZ    Επίπεδο patch για σταθερές εκδόσεις ή απλώς ένας μετρητής για εκδόσεις ανάπτυξης.

S      Σταθερότητα. Το 0 είναι alpha, το 1 είναι beta και το 2 είναι σταθερό. Το S θα πρέπει να είναι πάντα 2 όταν το YYY είναι άρτιο.

Το XYYYZZZS είναι το ίδιο και στις δύο γραμμές εάν το xz και το liblzma προέρχονται από την ίδια έκδοση XZ Utils.

Παραδείγματα: 4.999.9beta είναι 49990091 και 5.0.0 είναι 50000002.

ΚΩΔΙΚΟΣ ΕΞΟΔΟΥ

0     Όλα είναι εντάξει.

1     Έχει συμβεί ένα σφάλμα.

2     Έχει συμβεί κάτι που αξίζει μια προειδοποίηση, αλλά δεν έχουν συμβεί πραγματικά σφάλματα.

Οι ειδοποιήσεις (όχι προειδοποιήσεις ή σφάλματα) που εκτυπώνονται στην τυπική έξοδο σφάλματος δεν επηρεάζουν τον κώδικα εξόδου.

ΠΕΡΙΒΑΛΛΟΝ

Το xz αναλύει λίστες επιλογών που διαχωρίζονται με κενά από τις μεταβλητές περιβάλλοντος XZ_DEFAULTS και XZ_OPT, με αυτή τη σειρά, πριν αναλύσει τις επιλογές από τη γραμμή εντολών. Σημειώστε ότι μόνο οι επιλογές αναλύονται από τις μεταβλητές περιβάλλοντος. όλες οι μη επιλογές αγνοούνται σιωπηλά. Η ανάλυση γίνεται με τη συνάρτηση getopt_long(3), η οποία χρησιμοποιείται επίσης για τα ορίσματα της γραμμής εντολών.

Προειδοποίηση: Ορίζοντας αυτές τις μεταβλητές περιβάλλοντος, ουσιαστικά τροποποιεί κανείς προγράμματα και σενάρια που εκτελούν το xz. Τις περισσότερες φορές είναι ασφαλές να ορίζει κανείς όρια χρήσης μνήμης, αριθμό threads και επιλογές συμπίεσης μέσω των μεταβλητών περιβάλλοντος. Ωστόσο, ορισμένες επιλογές μπορούν να προκαλέσουν προβλήματα σε σενάρια. Ένα προφανές παράδειγμα είναι το --help, το οποίο κάνει το xz να εμφανίζει το κείμενο βοήθειας αντί να συμπιέζει ή να αποσυμπιέζει ένα αρχείο. Πιο λεπτές περιπτώσεις είναι οι --quiet και --verbose. Σε πολλές περιπτώσεις, λειτουργεί καλά η ενεργοποίηση της ένδειξης προόδου χρησιμοποιώντας το --verbose, αλλά σε ορισμένες περιπτώσεις τα επιπλέον μηνύματα δημιουργούν προβλήματα. Το επίπεδο λεπτομέρειας επηρεάζει επίσης τη συμπεριφορά του --list.

XZ_DEFAULTS

Επιλογές που καθορίζονται από τον χρήστη ή σε επίπεδο συστήματος. Συνήθως, αυτό ορίζεται σε ένα σενάριο αρχικοποίησης του shell για να ενεργοποιηθεί ο περιοριστής χρήσης μνήμης του xz εξ ορισμού ή να οριστεί ο προεπιλεγμένος αριθμός threads. Εκτός από σενάρια αρχικοποίησης του shell και παρόμοιες ειδικές περιπτώσεις, τα σενάρια δεν θα πρέπει ποτέ να ορίζουν ή να καταργούν το XZ_DEFAULTS.

XZ_OPT Αυτό χρησιμοποιείται για τη μετάδοση επιλογών στο xz όταν δεν είναι δυνατό να οριστούν οι επιλογές απευθείας στη γραμμή εντολών του xz. Αυτή είναι η περίπτωση όταν το xz εκτελείται από ένα σενάριο ή ένα εργαλείο, για παράδειγμα, το GNU [tar]({filename}../../tar)(1).

XZ_OPT=-2v tar caf foo.tar.xz foo

Τα σενάρια μπορούν να χρησιμοποιούν το XZ_OPT, για παράδειγμα, για να ορίσουν προεπιλεγμένες επιλογές συμπίεσης για συγκεκριμένα σενάρια. Είναι ακόμα συνιστώμενο να επιτρέπεται στους χρήστες να αντικαθιστούν το XZ_OPT, εάν αυτό είναι εύλογο. Για παράδειγμα, στα σενάρια sh(1), μπορεί να χρησιμοποιηθεί κάτι σαν αυτό:

XZ_OPT=${XZ_OPT-"-7e"}
export XZ_OPT

ΣΥΜΒΑΤΟΤΗΤΑ ΜΕ ΤΑ ΕΡΓΑΛΕΙΑ LZMA

Η σύνταξη της γραμμής εντολών του xz είναι πρακτικά ένα υπερσύνολο των lzma, unlzma και lzcat, όπως υπάρχουν στην έκδοση LZMA Utils 4.32.x. Στις περισσότερες περιπτώσεις, είναι δυνατό να αντικατασταθούν τα Εργαλεία LZMA με τα Εργαλεία XZ χωρίς να προκληθούν προβλήματα στα υπάρχοντα σενάρια. Υπάρχουν όμως ορισμένες ασυμβατότητες, οι οποίες μπορεί περιστασιακά να προκαλέσουν προβλήματα.

Επίπεδα προκαθορισμένης συμπίεσης

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

Επίπεδο xz Εργαλεία LZMA -0 256 KiB Δεν είναι διαθέσιμο -1 1 MiB 64 KiB -2 2 MiB 1 MiB -3 4 MiB 512 KiB -4 4 MiB 1 MiB -5 8 MiB 2 MiB -6 8 MiB 4 MiB -7 16 MiB 8 MiB -8 32 MiB 16 MiB -9 64 MiB 32 MiB

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

Επίπεδο xz Εργαλεία LZMA 4.32.x -0 3 MiB Δεν είναι διαθέσιμο -1 9 MiB 2 MiB -2 17 MiB 12 MiB -3 32 MiB 12 MiB -4 48 MiB 16 MiB -5 94 MiB 26 MiB -6 94 MiB 45 MiB -7 186 MiB 83 MiB -8 370 MiB 159 MiB -9 674 MiB 311 MiB

Το προεπιλεγμένο επίπεδο συμπίεσης στα Εργαλεία LZMA είναι -7, ενώ στα Εργαλεία XZ είναι -6, επομένως και τα δύο χρησιμοποιούν ένα λεξικό 8 MiB από προεπιλογή.

Αρχεία .lzma με ροή έναντι μη ροής

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

Το xz υποστηρίζει την αποσυμπίεση αρχείων .lzma με ή χωρίς δείκτη τέλους ροής, αλλά όλα τα αρχεία .lzma που δημιουργούνται από το xz θα χρησιμοποιούν δείκτη τέλους ροής και θα έχουν το μέγεθος του αποσυμπιεσμένου αρχείου σημειωμένο ως άγνωστο στην κεφαλίδα .lzma. Αυτό μπορεί να αποτελέσει πρόβλημα σε ορισμένες ασυνήθιστες περιπτώσεις. Για παράδειγμα, ένας αποσυμπιεστής .lzma σε μια ενσωματωμένη συσκευή μπορεί να λειτουργεί μόνο με αρχεία που έχουν γνωστό μέγεθος αποσυμπιεσμένου αρχείου. Εάν αντιμετωπίσετε αυτό το πρόβλημα, πρέπει να χρησιμοποιήσετε τα Εργαλεία LZMA ή το LZMA SDK για να δημιουργήσετε αρχεία .lzma με γνωστό μέγεθος αποσυμπιεσμένου αρχείου.


Μη υποστηριζόμενα αρχεία .lzma

Η μορφή .lzma επιτρέπει τιμές lc έως 8 και τιμές lp έως 4. Τα Εργαλεία LZMA μπορούν να αποσυμπιέσουν αρχεία με οποιεσδήποτε τιμές lc και lp, αλλά δημιουργούν πάντα αρχεία με lc=3 και lp=0. Η δημιουργία αρχείων με άλλες τιμές lc και lp είναι δυνατή με το xz και με το LZMA SDK.

Η υλοποίηση του φίλτρου LZMA1 στο liblzma απαιτεί το άθροισμα των lc και lp να μην υπερβαίνει το 4. Επομένως, τα αρχεία .lzma, των οποίων το άθροισμα υπερβαίνει αυτό το όριο, δεν μπορούν να αποσυμπιεστούν με το xz.

Τα Εργαλεία LZMA δημιουργούν μόνο αρχεία .lzma που έχουν μέγεθος λεξικού 2^n (μια δύναμη του 2), αλλά δέχονται αρχεία με οποιοδήποτε μέγεθος λεξικού. Το liblzma δέχεται μόνο αρχεία .lzma που έχουν μέγεθος λεξικού 2^n ή 2^n + 2^(n-1). Αυτό γίνεται για να μειωθούν τα ψευδώς θετικά αποτελέσματα κατά την ανίχνευση αρχείων .lzma.

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

Τελικά άχρηστα δεδομένα

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

Εάν υπάρχουν δεδομένα που έχουν απομείνει μετά την πρώτη ροή .lzma, το xz θεωρεί ότι το αρχείο είναι κατεστραμμένο, εκτός εάν χρησιμοποιηθεί η επιλογή --single-stream. Αυτό μπορεί να προκαλέσει προβλήματα σε σπάνια σενάρια που υποθέτουν ότι τα τελικά άχρηστα δεδομένα αγνοούνται.

ΣΗΜΕΙΩΣΕΙΣ

Η συμπιεσμένη έξοδος ενδέχεται να διαφέρει

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

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

Ενσωματωμένοι αποσυμπιεστές .xz

Οι υλοποιήσεις ενσωματωμένων αποσυμπιεστών .xz, όπως το XZ Embedded, δεν υποστηρίζουν απαραίτητα αρχεία που έχουν δημιουργηθεί με τύπους ελέγχου ακεραιότητας διαφορετικούς από τους none και crc32. Δεδομένου ότι η προεπιλογή είναι --check=crc64, πρέπει να χρησιμοποιήσετε τις επιλογές --check=none ή --check=crc32 κατά τη δημιουργία αρχείων για ενσωματωμένα συστήματα.

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

Το XZ Embedded υποστηρίζει τα φίλτρα BCJ, αλλά μόνο με την προεπιλεγμένη θέση έναρξης.

ΠΑΡΑΔΕΙΓΜΑΤΑ

Βασικά

Συμπιέστε το αρχείο foo στο foo.xz χρησιμοποιώντας το προεπιλεγμένο επίπεδο συμπίεσης (-6) και καταργήστε το foo εάν η συμπίεση είναι επιτυχής:

xz foo

Αποσυμπιέστε το bar.xz στο bar και μην καταργήσετε το bar.xz, ακόμη και αν η αποσυμπίεση είναι επιτυχής:

xz -d bar.xz

xz -dk bar.xz

Δημιουργήστε το baz.tar.xz με την προκαθορισμένη ρύθμιση -4e (-4 --extreme), η οποία είναι πιο αργή από την προεπιλεγμένη -6, αλλά απαιτεί λιγότερη μνήμη για συμπίεση και αποσυμπίεση (48 MiB και 5 MiB, αντίστοιχα):

tar cf - baz | xz -4e > baz.tar.xz

Ένα μείγμα συμπιεσμένων και μη συμπιεσμένων αρχείων μπορεί να αποσυμπιεστεί στην τυπική έξοδο με μια μόνο
εντολή:

xz -dcf a.txt b.txt.xz c.txt d.txt.lzma > abcd.txt

Παράλληλη συμπίεση πολλών αρχείων

Στα GNU και BSD, το find(1) και το xargs(1) μπορούν να χρησιμοποιηθούν για την παράλληλη συμπίεση πολλών αρχείων:

find . -type f \! -name '*.xz' -print0 \
| xargs -0r -P4 -n16 xz -T1

Η επιλογή -P του xargs(1) ορίζει τον αριθμό των παράλληλων διεργασιών xz. Η καλύτερη τιμή για την επιλογή -n εξαρτάται από τον αριθμό των αρχείων που πρόκειται να συμπιεστούν. Εάν υπάρχουν μόνο μερικά αρχεία, η τιμή θα πρέπει πιθανώς να είναι 1. με δεκάδες χιλιάδες αρχεία, 100 ή ακόμη και περισσότερο μπορεί να είναι κατάλληλο για να μειωθεί ο αριθμός των διεργασιών xz που θα δημιουργήσει τελικά το xargs(1).

Η επιλογή -T1 για το xz υπάρχει για να το αναγκάσει να λειτουργεί σε λειτουργία μίας μόνο διεργασίας, επειδή το xargs(1) χρησιμοποιείται για να ελέγξει την ποσότητα της παράλληλης εκτέλεσης.

Λειτουργία ρομπότ

Υπολογίστε πόσα byte έχουν εξοικονομηθεί συνολικά μετά τη συμπίεση πολλών αρχείων:

xz --robot --list *.xz | awk '/^totals/{print $5-$4}'

Ένα σενάριο μπορεί να χρειαστεί να γνωρίζει ότι χρησιμοποιεί μια αρκετά σύγχρονη έκδοση του xz. Το ακόλουθο σενάριο sh(1) ελέγχει ότι ο αριθμός έκδοσης του εργαλείου xz είναι τουλάχιστον 5.0.0. Αυτή η μέθοδος είναι συμβατή με παλαιότερες εκδόσεις beta, οι οποίες δεν υποστήριζαν την επιλογή --robot:

if ! eval "$(xz --robot --version 2> /dev/null)" ||
[ "$XZ_VERSION" -lt 50000002 ]; then
echo "Η έκδοση του xz είναι πολύ παλιά."
fi
unset XZ_VERSION LIBLZMA_VERSION

Ορίστε ένα όριο χρήσης μνήμης για την αποσυμπίεση χρησιμοποιώντας το XZ_OPT, αλλά εάν έχει ήδη οριστεί ένα όριο, μην το αυξήσετε:

NEWLIM=$((123 << 20))  # 123 MiB
OLDLIM=$(xz --robot --info-memory | cut -f3)
if [ $OLDLIM -eq 0 -o $OLDLIM -gt $NEWLIM ]; then
XZ_OPT="$XZ_OPT --memlimit-decompress=$NEWLIM"
export XZ_OPT
fi

Προσαρμοσμένες αλυσίδες φίλτρων συμπιεστή

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

Οι στήλες CompCPU των πινάκων από τις περιγραφές των επιλογών -0 ... -9 και --extreme είναι χρήσιμες κατά την προσαρμογή των προκαθορισμένων ρυθμίσεων LZMA2. Ακολουθούν τα σχετικά μέρη που συλλέχθηκαν από αυτούς τους δύο πίνακες:

Προκαθορισμένη ρύθμιση CompCPU -0 0 -1 1 -2 2 -3 3 -4 4 -5 5 -6 6 -5e 7 -6e 8

Εάν γνωρίζετε ότι ένα αρχείο απαιτεί ένα αρκετά μεγάλο λεξικό (για παράδειγμα, 32 MiB) για να συμπιεστεί καλά, αλλά θέλετε να το συμπιέσετε πιο γρήγορα από ό,τι θα έκανε το xz -8, μια προκαθορισμένη ρύθμιση με χαμηλή τιμή CompCPU (για παράδειγμα, 1) μπορεί να τροποποιηθεί ώστε να χρησιμοποιεί ένα μεγαλύτερο λεξικό:

xz --lzma2=preset=1,dict=32MiB foo.tar

Σε ορισμένα αρχεία, η παραπάνω εντολή μπορεί να είναι ταχύτερη από την xz -6, ενώ παράλληλα επιτυγχάνει σημαντικά καλύτερη συμπίεση. Ωστόσο, πρέπει να τονιστεί ότι μόνο ορισμένα αρχεία επωφελούνται από ένα μεγάλο λεξικό, διατηρώντας παράλληλα χαμηλή τιμή CompCPU. Η πιο προφανής περίπτωση, όπου ένα μεγάλο λεξικό μπορεί να βοηθήσει σημαντικά, είναι ένα αρχείο που περιέχει πολύ παρόμοια αρχεία, τουλάχιστον λίγων megabyte έκαστο. Το μέγεθος του λεξικού πρέπει να είναι σημαντικά μεγαλύτερο από οποιοδήποτε μεμονωμένο αρχείο, ώστε το LZMA2 να μπορεί να αξιοποιήσει πλήρως τις ομοιότητες μεταξύ των διαδοχικών αρχείων.

Εάν είναι αποδεκτή η πολύ υψηλή χρήση μνήμης από τον συμπιεστή και τον αποσυμπιεστή και το αρχείο που συμπιέζεται είναι τουλάχιστον μερικές εκατοντάδες megabyte, μπορεί να είναι χρήσιμο να χρησιμοποιηθεί ένα ακόμη μεγαλύτερο λεξικό από τα 64 MiB που θα χρησιμοποιούσε η xz -9:

xz -vv --lzma2=dict=192MiB big_foo.tar

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

Μερικές φορές, ο χρόνος συμπίεσης δεν έχει σημασία, αλλά η χρήση μνήμης από τον αποσυμπιεστή πρέπει να διατηρείται χαμηλή, για παράδειγμα, για να καταστεί δυνατή η αποσυμπίεση του αρχείου σε ένα ενσωματωμένο σύστημα. Η ακόλουθη εντολή χρησιμοποιεί το -6e (-6 --extreme) ως βάση και ορίζει το λεξικό μόνο σε 64 KiB. Το προκύπτον αρχείο μπορεί να αποσυμπιεστεί με το XZ Embedded (γι' αυτό υπάρχει το --check=crc32) χρησιμοποιώντας περίπου 100 KiB μνήμης.

xz --check=crc32 --lzma2=preset=6e,dict=64KiB foo

Εάν θέλετε να εξάγετε όσο το δυνατόν περισσότερα byte, η ρύθμιση του αριθμού των bit περιεχομένου (lc) και του αριθμού των bit θέσης (pb) μπορεί μερικές φορές να βοηθήσει. Η ρύθμιση του αριθμού των bit θέσης περιεχομένου (lp) μπορεί επίσης να βοηθήσει, αλλά συνήθως τα lc και pb είναι πιο σημαντικά. Για παράδειγμα, ένα αρχείο κώδικα περιέχει κυρίως κείμενο US-ASCII, επομένως κάτι σαν το ακόλουθο μπορεί να δώσει ένα αρχείο ελαφρώς (περίπου 0,1%) μικρότερο από το xz -6e (δοκιμάστε επίσης χωρίς το lc=4):

xz --lzma2=preset=6e,pb=0,lc=4 source_code.tar

Η χρήση ενός άλλου φίλτρου μαζί με το LZMA2 μπορεί να βελτιώσει τη συμπίεση για ορισμένους τύπους αρχείων. Για παράδειγμα, για να συμπιέσετε μια βιβλιοθήκη x86-32 ή x86-64 χρησιμοποιώντας το φίλτρο x86 BCJ:

xz --x86 --lzma2 libfoo.so

Σημειώστε ότι η σειρά των επιλογών φίλτρου είναι σημαντική. Εάν το --x86 καθοριστεί μετά το --lzma2, το xz θα δώσει ένα σφάλμα, επειδή δεν μπορεί να υπάρχει κανένα φίλτρο μετά το LZMA2, και επίσης επειδή το φίλτρο x86 BCJ δεν μπορεί να χρησιμοποιηθεί ως το τελευταίο φίλτρο στην αλυσίδα.

Το φίλτρο Delta μαζί με το LZMA2 μπορεί να δώσει καλά αποτελέσματα με εικόνες bitmap. Συνήθως, θα πρέπει να είναι καλύτερο από το PNG, το οποίο έχει μερικά πιο προηγμένα φίλτρα από ένα απλό delta, αλλά χρησιμοποιεί το Deflate για την πραγματική συμπίεση.

Η εικόνα πρέπει να αποθηκευτεί σε μη συμπιεσμένη μορφή, για παράδειγμα, ως μη συμπιεσμένο TIFF. Η παράμετρος απόστασης του φίλτρου Delta ορίζεται ώστε να ταιριάζει με τον αριθμό των byte ανά pixel στην εικόνα. Για παράδειγμα, ένα bitmap RGB 24 bit χρειάζεται dist=3, και είναι επίσης καλό να περάσετε το pb=0 στο LZMA2 για να φιλοξενήσετε την ευθυγράμμιση τριών byte:


xz --delta=dist=3 --lzma2=pb=0 foo.tiff

Εάν πολλές εικόνες έχουν τοποθετηθεί σε ένα ενιαίο αρχείο (για παράδειγμα, .tar), το φίλτρο Delta θα λειτουργήσει και σε αυτό, εφόσον όλες οι εικόνες έχουν τον ίδιο αριθμό byte ανά pixel.

ΔΕΣ ΕΠΙΣΗΣ

xzdec(1), xzdiff(1), xzgrep(1), xzless(1), xzmore(1), gzip(1), bzip2(1), 7z(1)

XZ Utils: [https://tukaani.org/xz/]
XZ Embedded: [https://tukaani.org/xz/embedded.html]
LZMA SDK: [https://7-zip.org/sdk.html]