Συμπίεση αρχείων
Η συμπίεση αρχείων είναι κάτι αρκετά διαδεδομένο σε όλα τα λειτουργικά. Ο τρόπος με τον οποίο συμπιέζεται ένα αρχείο, το πρωτόκολλο συμπίεσης όπως πιο σωστά καλείται, συνήθως είναι συμφυής με το λειτουργικό σύστημα για το οποίο προορίζεται η χρήση του αρχείου. Έτσι για τα Windows έχει πλέον εδραιωθεί η χρήση του πρωτοκόλλου ZIP (με δευτερεύοντα πρωτόκολλα όπως RAR, ACE, κλπ), ενώ στο UNIX και κατά συνέπεια και στο Linux, απαντώνται δύο κύρια πρωτόκολλα συμπίεσης τα οποία χρησιμοποιούνται από τις δύο εντολές που αναφέρουμε παρακάτω.
Η εντολή GNU zip (gzip)
Η εντολή gzip χρησιμοποιεί μια τεχνική κωδικοποίησης βασισμένη στο αλγόριθμό Lempel-Ziv. Τα συμπιεσμένα αρχεία αναγνωρίζονται με την κατάληξη .gz στο όνομά τους. Τη gzip συμπληρώνουν και ένα πλήθος άλλων εντολών, όπως gunzip, uncompress, και zcat. Στην ουσία πρόκειται για σθεναρούς συνδέσμους στην ίδια εντολή gzip, η οποία προσαρμόζει τη λειτουργία της αναλόγως τον τρόπο κλήσης της. Ως gunzip ή uncompress αποσυμπιέζει επί τόπου τα συμπιεσμένα αρχεία, ενώ ως zcat αποσυμπιέζει και τυπώνει στην πρότυπη έξοδο (ακριβώς όπως η εντολή cat) τα περιεχόμενά τους. Η εντολή gzip αναγνωρίζει και αρχεία που έχουν συμπιεστεί με την παλαιότερη εντολή του UNIX, compress, και έχουν την κατάληξη .Z.
Η σύνταξη των εντολών είναι η εξής:
gzip [options] file... gunzip [options] file... uncompress [options] file... zcat [options] file...
Ορισμένες από τις επιλογές που δέχονται αναγράφονται στον επόμενο πίνακα:
|
Επιλογές
|
Λειτουργία
|
|
-c --stdout --to-stdout |
Συμπιέζει (ή αποσυμπιέζει) και τυπώνει το αποτέλεσμα στην πρότυπη έξοδο. Χρήσιμο σε συνδυασμό με ανακατεύθυνση. Η zcat ορίζεται ως uncompress -c. |
|
-d --decompress --uncompress |
Αποσυμπιέζει τα αρχεία που δίνονται ως παράμετροι. |
|
-l --list |
Για κάθε αρχείο που δίνεται ως παράμετρος, εμφανίζονται οι εξής πληροφορίες: compressed size: Μέγεθος του συμπιεσμένου αρχέιου uncompressed size: αρχικό μέγεθος ratio: λόγος συμπίεσης uncompressed_name: όνομα αποσυμπιεσμένου αρχείου |
|
-r --recursive |
Πραγματοποιεί αναδρομικά στους περιεχόμενους καταλόγους την πράξη της συμπίεσης/αποσυμπίεσης. |
|
-S .suf --suffix .suf |
Χρησιμοποιεί ως κατάληξη το .suf. |
|
-t --test |
Ελέγχει την ακεραιότητα του αρχείου. Σε συνδυασμό με τη -v, τυπώνει OK μετά το όνομα του αρχείου αν τα δεδομένα του είναι ακέραια. |
| -v --verbose | Εμφανίζει επιπλέον πληροφορίες για την διαδικασία της συμπίεσης. |
|
-# --fast --best |
Ορίζει το επίπεδο ποιότητας της συμπίεσης. Η επιλογή -1 ή ισοδύναμα --fast δίνει μεγαλύτερη έμφαση στη μείωση του χρόνου συμπίεσης, ενώ η -9 (ισοδύναμα --best) προσπαθεί να επιτύχει μεγαλύτερο λόγο συμπίεσης. Το προκαθορισμένο επίπεδο συμπίεσης είναι -6. |
Αντίστοιχα προσφέρονται και εντολές που αποσυμπιέζουν ένα αρχείο και στέλνουν τα (αποσυμπιεσμένα) περιεχόμενά του σε άλλες εντολές, όπως zless, zmore, zgrep, zdiff, zcmp, κλπ. Ακολουθούν ορισμένα παραδείγματα της χρήσης της gzip και των βοηθητικών εντολών της.
Για να συμπιέσουμε δύο αρχεία file1 και file2 με ανάλυση της διαδικασίας
$ gzip -v file1 file2 file1: 91.6% -- replaced with file1.gz file2: 66.1% -- replaced with file2.gz
Αν το αρχείο file1 ήταν αρχείο κειμένου μπορούμε πολύ εύκολα να το δούμε με τις εξής ισοδύναμες εντολές:
$ zless file1.gz $ zcat file1.gz |less $ gunzip -c file1.gz |less $ gzip -dc file1.gz |less
Η zless ειδικά είναι πολύ χρήσιμη για να δούμε τα αρχεία κείμενων που συνοδεύουν τα πακέτα λογισμικού του Debian, που συνήθως είναι συμπιεσμένα:
$ zless /usr/share/doc/gzip/changelog.Debian.gz
Ενώ μπορούμε να αναζητήσουμε κείμενο μέσα στο αρχείο χωρίς να το αποσυμπιέσουμε:
$ zgrep -i “Prices” file1.gz
Η ίδια η gzip με την επιλογή -l μας δίνει πληροφορίες για τα συμπιεσμένα αρχεία, ενώ με τις -lv οι πληροφορίες είναι πιο αναλυτικές.
$ gzip -l file1 file2
compressed uncompressed ratio uncompressed_name
1782 20845 91.6% file1
600 1700 66.1% file2
2382 22545 89.5% (totals)
$ gzip -lv file1 file2
method crc date time compressed uncompressed ratio uncompressed_name
defla 829009df Jul 8 13:18 1782 20845 91.6% file1
defla 6f54f29f Jul 8 13:18 600 1700 66.1% file2
2382 22545 89.5% (totals)
Η εντολή bzip2
Η εντολή bzip2 βασίζεται σε μια διαφορετική τεχνική συμπίεσης, τον αλγόριθμο ταξινόμησης block κειμένου Burrows-Wheeler που σε πολλές περιπτώσεις παρέχει καλύτερους λόγους συμπίεσης από τον αλγόριθμο Lempel-Ziv. Τα αρχεία που είναι συμπιεσμένα με αυτήν την εντολή έχουν συνήθως την κατάληξη .bz2.
Η σύνταξή της εντολής είναι παρόμοια με της gzip ενώ οι επιλογές της είναι σχεδόν ίδιες με αυτές της gzip.
bzip2 [options] file... bunzip2 [options] file... bzcat [options] file... bzip2recover filename
Παρέχονται και εδώ οι αντίστοιχες βοηθητικές εντολές bzless, bzmore, bzgrep, bzdiff, bzcmp, κλπ.
Η bzip2recover είναι μια εντολή ανάκτησης δεδομένων από ένα κατεστραμμένο αρχείο .bz2, αν φυσικά κάτι τέτοιο είναι δυνατόν. Ωστόσο συμβαίνει κάποιες φορές ένα αρχείο να είναι κατεστραμμένο σε μόνο μερικά σημεία, και αυτό ακριβώς προσπαθεί να εκμεταλλευτεί η bzip2recover για να ανακτήσει τα υπόλοιπα τμήματα του αρχείου τα οποία είναι άθικτα.
Άλλες εντολές συμπίεσης
Σε περίπτωση που χρειαστείτε να αποσυμπιέσετε άλλων ειδών αρχεία, το Debian προσφέρει εργαλεία για τα περισσότερα διαθέσιμα πρωτόκολλα συμπίεσης. Αναφορικά, παραθέτουμε τον ακόλουθο πίνακα:
| Κατάληξη Αρχείου | Πακέτα στο Debian |
| .zip | zip, unzip |
| .rar | rar, unrar |
| .lha | lha |
| .arj | arj, unarj |
| .zoo | zoo, unzoo |
Active forum topics
- Wake up from suspend mode failed
- Οργάνωση στις μεταφράσεις των ελληνικών στο Debian.
- απορια σχετικα με nvidia440
- πρόβλημα εγκατάστασης nvidia driver GTS250.
- kernel 2.6.38 για squeeze
- Gnome3
- 2 μήνες σπασμένο το upgrade σε unstable [SOLVED]
- Οι χρήστες του Internet Explorer είναι χαζοί;
- Debian Lenny + Nvidia drivers
- εγκατασταση usb cosmote
New forum topics
Νέοι χρήστες
- kountp
- Adonthegreat
- giorgos_m
- prodromos
- airmaik
Οι πιο πρόσφατες καταχωρίσεις blog.
- Fosscomm 2012
- armhf officially into Debian!
- back from UDS/Linaro Connect...
- FTF is over, Linaro Interview
- straight from FTF 2011, San Antonio...
- Όσο μεγαλώνεις μαθαίνεις...
- Emdebian 2011 Sprint report, Genesi Europe store goes online...
- Θεσσαλονίκη - open source ERP workshop
- Χρήσιμο URL για Flash Cards και Linux filesystems
- Cambridge, UK, ARM HQ for Emdebian 2011 Sprint