{{anchor href="top"}}
Hits : **{{hits}}**
== Linux Data Compression :: Mini How To ==
{{ToC from="h2" to="h3"}}
=== Συμπίεση Δεδομένων ===
Τα κυριότερα προγράμματα συμπίεσης/αποσυμπίεσης στο λειτουργικό σύστημα linux
είναι πέντε (5).
* zip
* ((http://www.gzip.org/ gzip))
* ((http://www.bzip.org/ bzip2))
* ((http://www.rarlab.com/rar_file.htm rar))
* ((http://tukaani.org/xz/ xz))
Για να δούμε περισσότερες πληροφορίες για το κάθε πρόγραμμα χρειάζεται
να γράψουμε τις εξής εντολές:
* man zip
* man gzip
* man bzip2
* man rar
* man xz
Οι κυριότερες καταλήξεις αρχείων για κάθε αλγόριθμο (ΚΑΙ ΟΧΙ ΔΕΝ ΠΑΙΖΕΙ
ΚΑΜΙΑ ΣΗΜΑΣΙΑ ΣΤΟ LINUX - ΕΤΣΙ ΤΟ ΛΕΩ) είναι οι εξής (έστω ότι το όνομα
του συμπιεσμένου αρχείου είναι filename):
* filename**.zip**
* filename**.gz**
* filename**.bz2**
* filename**.rar**
* filename**.xz**
==== Καταλήξεις Αρχείων====
Οι καταλήξεις αρχείων (**file extension**) δημιουργήθηκαν για να μπορούμε
εύκολα να καταλαβαίνω τι τύπου δεδομένα έχει ένα αρχείο. Σε παλαιότερα
συστήματα η κατάληξη ήταν ξεχωριστό attribute στο partition table και όχι
μέρος του ονόματος (π.χ. FAT). Σε νεώτερα λειτουρικά συστήματα αλλά κυρίως
σε unix(like/based) η πληροφορία του τύπου των δεδομένων καταγράφεται σε
metadata ή ακόμα καλύτερα σε extended attribute στο πίνακα του συστήματος
αρχείων. Ένας ακόμα τρόπος για να μάθουμε τον τύπο των δεδομένων ενός αρχείου
είναι το **MIME Type** κυρίως διαδεδομένος στο διαδίκτυο.
Στο Linux για να δούμε τον τύπο των δεδομένων ενός αρχείου πληκτρολογούμε την
εξής εντολή:
%%
file filename.extension
%%
και ένα παράδειγμα είναι το εξής:
%%
file /bin/ls
/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.8, dynamically linked (uses shared libs), stripped
%%
((#top))
-----------
==== Αποσυμπίεση Αρχείων ====
Για να αποσυμπιέσουμε το καθένα από τα παραπάνω αρχεία χρειάζεται να
πληκτρολογήσουμε τις εξής εντολές:
* unzip filename.zip
* gunzip filename.zip
* bunzip2 filename.bz2
* rar x filename.rar
* unxz filename.xz
((#top))
-----------
==== Συμπίεση Αρχείων ====
Για να συμπιέσουμε ένα αρχείο τότε χρειάζεται να επιλέξουμε καταρχήν τον
αλγόριθμο συμπίεσης και εν συνεχεία να πληκτρολογήσουμε μία εκ των εξής
εντολών:
* zip filename.zip filename
* gzip filename
* bzip2 filename
* rar a filename.rar filename
* xz filename
((#top))
-----------
=== Archive Files :: Tar ===
Τι γίνεται όταν έχουμε όχι ένα αρχείο αλλά έναν κατάλογο με πάρα μα πολλά
αρχεία και πολλούς υποκαταλόγους, τότε απλά χρειαζόμαστε το ((http://www.gnu.org/software/tar/ tar)).
Το tar είναι ένα πρόγραμμα με το οποίο δημιουργούμε archives ή κάνουμε
extract ολόκληρες δομές καταλόγων και αρχείων από μόνο ένα αρχείο.
((#top))
-----------
==== Δημιουργία Archive ====
Έστω λοιπόν ότι θέλουμε να πάρουμε ένα αντίγραφο του καταλόγου **/etc**
Γράφουμε το εξής:
* tar cvf etc_backup.tar /etc
Οι παράμετροι είναι οι εξής:
* c : create
* v : verbose
* f : file archive
που σημαίνει ότι θα δημιουργήσει και ταυτόχρονα θα δούμε όλα τα αρχεία
που θα αρχειοθετήσει εντός του αρχείου archive.
((#top))
-----------
==== Extract Αρχείων ====
Πως κάνουμε εξαγωγή των αρχείων και των καταλόγων από ένα αρχείο αρχειοθήκης.
Πληκτρολογούμε το εξής:
* tar xvf etc_backup.tar
Οι παράμετροι είναι οι εξής:
* x : extract
* v : verbose
* f : file archive
που σημαίνει ότι θα εξάγει και ταυτόχρονα θα δούμε όλα τα αρχεία που έχουμε
αρχειοθετήσει εντός του αρχείου archive.
((#top))
-----------
==== Εμφάνιση Αρχείων ====
Πως μπορούμε να δούμε τα περιεχόμενα ενός αρχείου archive χωρίς να τα
εξάγουμε, πολύ απλά πληκτρολογούμε το εξής:
* tar tf etc_backup.tar
Οι παράμετροι είναι οι εξής:
* t : list
* f : file archive
οπότε θα δούμε τα περιεχόμενα ενός αρχείου χωρίς να τα εξάγουμε.
((#top))
-----------
=== Εξαγωγή Αρχείου από Αρχειοθήκη ===
Όταν θέλουμε να εξάγουμε μόνο συγκεκριμένα αρχεία από ένα tar
τότε χρειάζεται να κάνουμε 2 πράγματα:
a. Πρέπει να βρούμε το αρχείο που θέλουμε να εξάγουμε και
b. Να το εξάγουμε :)
Παράδειγμα (έστω ότι έχουμε το etc.tar ως αντίγραφο του καταλόγου /etc):
%%
tar tf etc.tar | grep -i passwd
etc/passwd
%%
Οπότε εάν θέλουμε το παραπάνω αρχείο τότε:
%%
tar xf etc.tar etc/passwd
%%
((#top))
-----------
=== Δημιουργία & Συμπίεση Αρχειοθήκης ===
Ένα από τα καλύτερα σημεία είναι ότι μπορούμε να έχουμε αντίγραφα
των καταλόγων μας και όλων των αρχείων μας σε ένα και μόνο αρχείο
το οποίο να το έχουμε και συμπιεσμένο ταυτόχρονα με μία εντολή:
Επιλέγουμε τον αλγόριθμο συμπίεσης που θέλουμε (gnu zip ή bzip2 ή xz) και γράφουμε:
* tar jcvf etc_backup.tar.bz2 /etc
ή
* tar zcvf etc_backup.tar.gz /etc
ή
* tar Jcvf etc_backup.tar.xz /etc
((#top))
-----------
=== Αποσυμπίεση & Εξαγωγή Αρχειοθήκης ===
Έστω λοιπόν ότι έχουμε ένα αρχείο μορφής tar σε συμπιεσμένη μορφή
(μπορεί να είναι για παράδειγμα ο πηγαίος κώδικας από ένα πρόγραμμα
που θέλουμε να εγκαταστήσουμε):
* filename.tar.gz
ή
* filename.tgz
ή
* filename.txz
τότε η εξαγωγή των αρχείων μπορεί να γίνει με τον εξής τρόπο:
* tar zxvf filename.tar.gz
Οι παράμετροι είναι οι εξής:
* z : gnu unzip
* x : extract
* v : verbose
* f : file archive
Που σημαίνει ότι θα γίνει η αποσυμπίεση, η εξαγωγή όλων των αρχείων καθώς
και ολόκληρης της τυχόν υποδομής καταλόγων και υποκαταλόγων.
Εάν η συμπίεση έχει γίνει με τον αλγόριθμο bzip2 τότε το συμπιεσμένο
αρχείο θα έχει την μορφή:
* tar jxvf filename.tar.bz2
Οι παράμετροι είναι οι εξής:
* j : bzip unzip
* x : extract
* v : verbose
* f : file archive
Που σημαίνει ότι θα γίνει η αποσυμπίεση, η εξαγωγή όλων των αρχείων καθώς
και ολόκληρης της τυχόν υποδομής καταλόγων και υποκαταλόγων.
Εάν η συμπίεση έχει γίνει με τον αλγόριθμο xz τότε το συμπιεσμένο
αρχείο θα έχει την μορφή:
* tar Jxvf filename.tar.bx2
Οι παράμετροι είναι οι εξής:
* **J** : xz unzip
* **x** : extract
* **v** : verbose
* **f** : file archive
Που σημαίνει ότι θα γίνει η αποσυμπίεση, η εξαγωγή όλων των αρχείων καθώς
και ολόκληρης της τυχόν υποδομής καταλόγων και υποκαταλόγων.
**Εύκολο έτσι ;**
((#top))
-----------
=== ToDo List ===
* Περισσότερα Παραδείγματα
* καλύτερη σαφήνεια - ορθότερη τεχνική τεκμηρίωση
* επεξήγηση των filename extension
* δημιουργία αναγνώσιμου PDF
* checksum verification
((#top))
-----------