Tin tức và phân tích của tất cả các thiết bị di động

Cách giải nén tệp từ tệp .tar.gz hoặc .tar.bz2 trên Linux

Tệp tar là tệp lưu trữ được nén. Bạn sẽ gặp chúng thường xuyên khi sử dụng bản phân phối Linux như Ubuntu và ngay cả khi sử dụng thiết bị đầu cuối trên macOS. Đây là cách trích xuất – hoặc giải nén – nội dung của tệp tar, còn được gọi là tệp lưu trữ.

.tar.gz và .tar.bz2 nghĩa là gì?

Các tệp có phần mở rộng .tar.gz hoặc .tar.bz2 là các tệp lưu trữ được nén. Tệp .tar không được nén, nhưng trường hợp này rất hiếm.

Phần .tar của phần mở rộng tệp là viết tắt của lưu trữ băng và là lý do tại sao cả hai loại tệp này đều được gọi là tệp tar. Các tệp tar có từ năm 1979, khi lệnh tar được tạo để cho phép quản trị viên hệ thống lưu trữ các tệp vào băng từ. Bốn mươi năm sau, chúng tôi vẫn sử dụng lệnh tar để giải nén các tệp tar vào ổ cứng của mình. Ai đó ở đâu đó có lẽ vẫn đang sử dụng tar với băng.

Hậu tố mở rộng .gz hoặc .bz2 cho biết rằng kho lưu trữ đã được nén bằng thuật toán nén gzip hoặc bzip2. Lệnh tar sẽ hoạt động tốt với cả hai loại tệp, vì vậy không quan trọng phương pháp nén nào được sử dụng – và sẽ có sẵn ở bất kỳ đâu bạn có trình bao Bash. Chỉ cần sử dụng các tùy chọn dòng lệnh tar thích hợp.

Trích xuất tệp từ tệp tar

Giả sử bạn đã tải xuống hai tệp bản nhạc. Một tệp có tên ukulele_songs.tar.gz và tệp còn lại là guitar_songs.tar.bz2. Các tệp này nằm trong thư mục Tải xuống.

Hãy trích xuất các bài hát ukulele:

tar -xvzf ukulele_songs.tar.gz

Sau khi các tệp được giải nén, chúng sẽ được hiển thị trong cửa sổ đầu cuối.

Giải nén tất cả các tệp từ tệp tar

Các tùy chọn dòng lệnh chúng tôi đã sử dụng là:

-x: Giải nén, lấy file từ file tar.
-v: Chi tiết, hiển thị các tệp khi chúng được giải nén.
-z: Gzip, dùng gzip để giải nén file tar.
-f: File, tên file tar sẽ làm việc. Tùy chọn này phải được theo sau bởi tên của tệp tar.

Liệt kê các tệp trong thư mục với ls và bạn sẽ thấy thư mục có tên Bài hát Ukulele đã được tạo. Các tập tin được giải nén nằm trong thư mục này. Danh mục này đến từ đâu? Nó được chứa trong một tệp tar và được giải nén cùng với các tệp.

Thư mục Bài hát Ukulele được tạo trong thư mục Tải xuống

Bây giờ chúng ta hãy trích xuất các bài hát guitar. Để làm điều này, chúng tôi sẽ sử dụng gần như chính xác lệnh như trước đây, nhưng với một điểm khác biệt quan trọng. Hậu tố mở rộng .bz2 cho chúng ta biết rằng nó đã được nén bằng lệnh bzip2. Thay vì sử dụng tùy chọn -z (gzip), chúng tôi sẽ sử dụng tùy chọn -j (bzip2).

tar -xvjf guitar_songs.tar.bz2

Giải nén tệp tar của các bản nhạc guitar trong thư mục Tải xuống

Một lần nữa, các tệp được hiển thị trên thiết bị đầu cuối trong khi giải nén. Để rõ ràng, các tùy chọn dòng lệnh chúng tôi đã sử dụng với tar cho tệp .tar.bz2 là:

-x: Giải nén, lấy file từ file tar.
-v: Chi tiết, hiển thị các tệp khi chúng được giải nén.
-j:bzip2, dùng bzip2 để giải nén file tar.
-f: file, tên của file tar để làm việc.

Nếu chúng ta liệt kê các tệp trong thư mục tải xuống, chúng ta sẽ thấy rằng một thư mục khác có tên Bài hát guitar đã được tạo.

Một thư mục các bản nhạc guitar được tạo trong thư mục Tải xuống

Chọn nơi giải nén tập tin

Nếu chúng tôi muốn giải nén các tệp vào một vị trí khác với thư mục hiện tại, chúng tôi có thể chỉ định thư mục đích bằng tùy chọn -C (thư mục được chỉ định).

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

Nhìn vào thư mục Documents/Songs của chúng ta, chúng ta sẽ thấy rằng một thư mục Guitar Songs đã được tạo.

Một thư mục các bản nhạc guitar được tạo trong thư mục Tài liệu/Bài hát

Lưu ý rằng thư mục đích phải tồn tại, tar sẽ không tạo nếu nó không tồn tại. Nếu bạn muốn tạo một thư mục và trích xuất tất cả các tệp tar vào đó bằng một lệnh, bạn có thể làm như sau:

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

Tùy chọn -p (parents) khiến mkdir tạo tất cả các thư mục mẹ cần thiết, đảm bảo rằng thư mục đích được tạo.

Nhìn trộm vào các tệp tar trước khi giải nén chúng

Cho đến nay, chúng tôi chỉ cần thực hiện một bước niềm tin và trích xuất các tệp vô hình. Bạn có thể muốn nhìn trước khi bạn nhảy. Bạn có thể xem nội dung của tệp tar trước khi giải nén bằng tùy chọn -t (danh sách). Nó thường thuận tiện để dẫn đầu ra bằng lệnh less.

tar -tf ukulele_songs.tar.gz | less

Lưu ý rằng chúng ta không cần sử dụng tùy chọn -z để liệt kê các tệp. Chúng ta chỉ cần thêm tùy chọn -z khi giải nén file từ file .tar.gz. Tương tự, chúng ta không cần tùy chọn -j để liệt kê các tệp trong tar.bz2.

Nội dung của tệp tar được dẫn bởi less

Cuộn qua đầu ra, chúng ta có thể thấy rằng mọi thứ trong tệp tar được lưu trữ trong một thư mục có tên Bài hát Ukulele và trong thư mục này có các tệp và các thư mục khác.

Chế độ xem thứ hai về nội dung của tệp tar được dẫn ít hơn

Chúng ta có thể thấy rằng thư mục Bài hát Ukulele chứa các thư mục có tên Bài hát ngẫu nhiên, Ramones và Có thể.

Để giải nén tất cả các tệp từ một thư mục trong tệp tar, hãy sử dụng lệnh sau. Lưu ý rằng đường dẫn nằm trong dấu ngoặc kép vì nó chứa khoảng trắng.

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

Trích xuất một thư mục từ tệp tar

Để giải nén một tệp, chỉ định đường dẫn và tên tệp.

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

Trích xuất một tệp từ tệp tar

Bạn có thể trích xuất các tệp đã chọn bằng ký tự đại diện, trong đó * đại diện cho bất kỳ chuỗi nào và ? đại diện cho bất kỳ ký tự đơn nào. Sử dụng ký tự đại diện yêu cầu tùy chọn -wildcards.

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

Trích xuất các bài hát từ tar bằng ký tự đại diện

Giải nén tập tin mà không giải nén thư mục

Nếu bạn không muốn cấu trúc thư mục trong tệp tar được tạo lại trên ổ cứng của mình, hãy sử dụng tùy chọn –strip-components. Tùy chọn –strip-components yêu cầu tham số dạng số. Con số đại diện cho số cấp độ thư mục để bỏ qua. Các tệp từ các thư mục bị bỏ qua vẫn được trích xuất, nhưng cấu trúc thư mục không được sao chép vào ổ cứng.

Trong tệp tar ví dụ của chúng tôi, nếu chúng tôi chỉ định –strip-components= 1, thư mục trên cùng của các bài hát Ukulele trong tệp tar sẽ không được tạo trên ổ cứng. Các tệp và thư mục sẽ được trích xuất vào thư mục này sẽ được trích xuất trong thư mục đích.

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

Trích xuất tệp từ tệp tar bằng --strip-components= 1

Trong tệp tar mẫu của chúng tôi, chỉ có hai cấp độ lồng thư mục. Vì vậy, nếu chúng ta sử dụng –strip-components= 2tất cả các tệp sẽ được trích xuất vào thư mục đích và không có thư mục nào khác được tạo.

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

Giải nén tệp từ tệp tar bằng --strip-components= 2

Nếu bạn xem trang hướng dẫn của Linux, bạn sẽ thấy rằng tar phải là một ứng cử viên sáng giá cho danh hiệu “lệnh có nhiều tùy chọn dòng lệnh nhất”. May mắn thay, để chúng tôi có thể giải nén các tệp từ tệp .tar.gz và tar.bz2 với mức độ kiểm soát chi tiết tốt, chúng tôi chỉ cần biết một số tùy chọn này.