Πώς να εξάγετε αρχεία από ένα αρχείο .tar.gz ή .tar.bz2 στο Linux

Τα αρχεία Tar είναι συμπιεσμένα αρχεία. Θα τα συναντήσετε συχνά όταν χρησιμοποιείτε μια διανομή Linux όπως το Ubuntu ή ακόμα και όταν χρησιμοποιείτε το τερματικό στο macOS. Δείτε πώς μπορείτε να εξαγάγετε—ή να αφαιρέσετε το περιεχόμενο—του περιεχομένου ενός αρχείου tar, γνωστό και ως tarball.

Τι σημαίνει .tar.gz και .tar.bz2;

Τα αρχεία που έχουν επέκταση .tar.gz ή .tar.bz2 είναι συμπιεσμένα αρχεία αρχειοθέτησης. Ένα αρχείο με μόνο επέκταση .tar δεν είναι συμπιεσμένο, αλλά αυτά θα είναι πολύ σπάνια.

Το τμήμα .tar της επέκτασης αρχείου σημαίνει αρχείο ταινιών και είναι ο λόγος που και οι δύο αυτοί τύποι αρχείων ονομάζονται αρχεία tar. Τα αρχεία Tar χρονολογούνται από το 1979, όταν δημιουργήθηκε η εντολή tar για να επιτρέψει στους διαχειριστές του συστήματος να αρχειοθετούν αρχεία σε κασέτα. Σαράντα χρόνια αργότερα εξακολουθούμε να χρησιμοποιούμε την εντολή tar για να εξαγάγουμε αρχεία tar στους σκληρούς μας δίσκους. Κάποιος κάπου πιθανότατα εξακολουθεί να χρησιμοποιεί πίσσα με ταινία.

Το επίθημα επέκτασης .gz ή .bz2 υποδεικνύει ότι το αρχείο έχει συμπιεστεί, χρησιμοποιώντας είτε τον αλγόριθμο συμπίεσης gzip είτε bzip2. Η εντολή tar θα λειτουργεί ικανοποιητικά και με τους δύο τύπους αρχείων, επομένως δεν έχει σημασία ποια μέθοδος συμπίεσης χρησιμοποιήθηκε—και θα πρέπει να είναι διαθέσιμη παντού όπου έχετε ένα κέλυφος Bash. Απλά πρέπει να χρησιμοποιήσετε τις κατάλληλες επιλογές γραμμής εντολών tar.

Εξαγωγή αρχείων από αρχεία Tar

Ας υποθέσουμε ότι έχετε κατεβάσει δύο αρχεία παρτιτούρας. Το ένα αρχείο ονομάζεται ukulele_songs.tar.gz, το άλλο ονομάζεται guitar_songs.tar.bz2. Αυτά τα αρχεία βρίσκονται στον κατάλογο Λήψεις.

  Πώς να βελτιστοποιήσετε ένα SSD σε Linux

Ας εξαγάγουμε τα τραγούδια γιουκαλίλι:

tar -xvzf ukulele_songs.tar.gz

Καθώς εξάγονται τα αρχεία, παρατίθενται στο παράθυρο του τερματικού.

Οι επιλογές της γραμμής εντολών που χρησιμοποιήσαμε είναι:

-x: Εξαγωγή, ανάκτηση των αρχείων από το αρχείο tar.
-v: Αναλυτικά, καταχωρίστε τα αρχεία καθώς εξάγονται.
-z: Gzip, χρησιμοποιήστε το gzip για να αποσυμπιέσετε το αρχείο tar.
-f: Αρχείο, το όνομα του αρχείου tar με το οποίο θέλουμε να δουλέψουμε το tar. Αυτή η επιλογή πρέπει να ακολουθείται από το όνομα του αρχείου tar.

Καταχωρίστε τα αρχεία στον κατάλογο με ls και θα δείτε ότι έχει δημιουργηθεί ένας κατάλογος που ονομάζεται Ukulele Songs. Τα εξαγόμενα αρχεία βρίσκονται σε αυτόν τον κατάλογο. Από πού προήλθε αυτός ο κατάλογος; Περιέχονταν στο αρχείο tar και εξήχθη μαζί με τα αρχεία.

Τώρα ας εξαγάγουμε τα τραγούδια της κιθάρας. Για να το κάνουμε αυτό θα χρησιμοποιήσουμε σχεδόν ακριβώς την ίδια εντολή με πριν, αλλά με μια σημαντική διαφορά. Το επίθημα επέκτασης .bz2 μας λέει ότι έχει συμπιεστεί χρησιμοποιώντας την εντολή bzip2. Αντί να χρησιμοποιήσουμε την επιλογή the-z (gzip), θα χρησιμοποιήσουμε την επιλογή -j (bzip2).

tar -xvjf guitar_songs.tar.bz2

Για άλλη μια φορά, τα αρχεία παρατίθενται στο τερματικό καθώς εξάγονται. Για να είμαστε σαφείς, οι επιλογές της γραμμής εντολών που χρησιμοποιήσαμε με το tar για το αρχείο .tar.bz2 ήταν:

-x: Εξαγωγή, ανάκτηση των αρχείων από το αρχείο tar.
-v: Αναλυτικά, καταχωρίστε τα αρχεία καθώς εξάγονται.
-j: Bzip2, χρησιμοποιήστε bzip2 για να αποσυμπιέσετε το αρχείο tar.
-f: Αρχείο, όνομα του αρχείου tar με το οποίο θέλουμε να δουλέψουμε το tar.

Αν παραθέσουμε τα αρχεία στον κατάλογο Λήψη θα δούμε ότι έχει δημιουργηθεί ένας άλλος κατάλογος που ονομάζεται Guitar Songs.

Επιλέγοντας πού να εξαγάγετε τα αρχεία

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

tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/

Ψάχνοντας στον κατάλογο Έγγραφα/Τραγούδια μας, θα δούμε ότι έχει δημιουργηθεί ο κατάλογος Guitar Songs.

  Πώς να εγκαταστήσετε το Sqlite Browser σε Linux

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

mkdir -p ~/Documents/Songs/Downloaded && tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/Downloaded/

Η επιλογή -p (γονείς) αναγκάζει το mkdir να δημιουργήσει τυχόν γονικούς καταλόγους που απαιτούνται, διασφαλίζοντας τη δημιουργία του καταλόγου προορισμού.

Ψάχνετε μέσα σε αρχεία Tar πριν τα εξαγάγετε

Μέχρι στιγμής, απλώς κάναμε ένα άλμα πίστης και εξάγαμε τα αρχεία που ήταν αόρατα. Μπορεί να θέλετε να κοιτάξετε πριν πηδήξετε. Μπορείτε να ελέγξετε τα περιεχόμενα ενός αρχείου tar πριν το εξαγάγετε χρησιμοποιώντας την επιλογή -t (λίστα). Συνήθως είναι βολικό να διοχετεύεται η έξοδος μέσω της εντολής less.

tar -tf ukulele_songs.tar.gz | less

Σημειώστε ότι δεν χρειάζεται να χρησιμοποιήσουμε την επιλογή -z για τη λίστα των αρχείων. Χρειάζεται μόνο να προσθέσουμε την επιλογή -z όταν εξάγουμε αρχεία από ένα αρχείο .tar.gz. Ομοίως, δεν χρειαζόμαστε την επιλογή -j για να παραθέσουμε τα αρχεία σε ένα αρχείο tar.bz2.

Με κύλιση στην έξοδο μπορούμε να δούμε ότι όλα στο αρχείο tar βρίσκονται σε έναν κατάλογο που ονομάζεται Ukulele Songs και μέσα σε αυτόν τον κατάλογο υπάρχουν αρχεία και άλλοι κατάλογοι.

Μπορούμε να δούμε ότι ο κατάλογος Ukulele Songs περιέχει καταλόγους που ονομάζονται Random Songs, Ramones και Possibles.

Για να εξαγάγετε όλα τα αρχεία από έναν κατάλογο μέσα σε ένα αρχείο tar χρησιμοποιήστε την ακόλουθη εντολή. Σημειώστε ότι η διαδρομή είναι τυλιγμένη σε εισαγωγικά επειδή υπάρχουν κενά στη διαδρομή.

tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/Ramones/"

Για να εξαγάγετε ένα μεμονωμένο αρχείο, δώστε τη διαδρομή και το όνομα του αρχείου.

tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/023 - My Babe.odt"

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

tar -xvz --wildcards -f ukulele_songs.tar.gz "Ukulele Songs/Possibles/B*"

Εξαγωγή αρχείων χωρίς εξαγωγή καταλόγων

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

  Πώς να δείτε τον ελεύθερο χώρο στο δίσκο και τη χρήση του δίσκου από το τερματικό Linux

Εάν καθορίσουμε –strip-components=1 με το παράδειγμα του αρχείου tar, ο κορυφαίος κατάλογος τραγουδιών Ukulele στο αρχείο tar δεν δημιουργείται στον σκληρό δίσκο. Τα αρχεία και οι κατάλογοι που θα είχαν εξαχθεί σε αυτόν τον κατάλογο εξάγονται στον κατάλογο προορισμού.

tar -xvzf ukulele_songs.tar.gz --strip-components=1

Υπάρχουν μόνο δύο επίπεδα καταλόγου που είναι ένθετα μέσα στο παράδειγμά μας αρχείο tar. Έτσι, εάν χρησιμοποιήσουμε –strip-components=2, όλα τα αρχεία εξάγονται στον κατάλογο προορισμού και δεν δημιουργούνται άλλοι κατάλογοι.

tar -xvzf ukulele_songs.tar.gz --strip-components=2

Αν κοιτάξετε το Linux σελίδα ανθρώπου θα δείτε ότι το tar πρέπει να είναι καλός υποψήφιος για τον τίτλο “εντολή που έχει τις περισσότερες επιλογές γραμμής εντολών”. Ευτυχώς, για να μας επιτρέψετε να εξαγάγουμε αρχεία από αρχεία .tar.gz και tar.bz2 με καλό βαθμό λεπτομερούς ελέγχου, χρειάζεται μόνο να θυμόμαστε μερικές από αυτές τις επιλογές.