Câu hỏi Tôi cần lệnh gì để giải nén / giải nén tệp .tar.gz?


Tôi nhận được một tệp .tar.gz khổng lồ từ một ứng dụng khách có chứa khoảng 800 mb tệp hình ảnh (khi không nén.) Công ty lưu trữ của chúng tôi rất chậm, do đó, giải nén tất cả các tệp cục bộ và gửi chúng qua FTP không thực tế. Tôi đã có thể ftp .tar.gz tập tin vào trang web lưu trữ của chúng tôi, nhưng khi tôi ssh vào thư mục của tôi và thử sử dụng giải nén, nó mang lại cho tôi lỗi này:

[esthers@clients locations]$ unzip community_images.tar.gz
Archive:  community_images.tar.gz
  End-of-central-directory signature not found.  Either this file is not a zipfile, or it constitutes one disk of a multi-part archive.  In the latter case the central directory and zipfile comment will be found on the last disk(s) of this archive.
note:  community_images.tar.gz may be a plain executable, not an archive
unzip:  cannot find zipfile directory in one of community_images.tar.gz or community_images.tar.gz.zip, and cannot find community_images.tar.gz.ZIP, period.

Tôi cần sử dụng lệnh nào để trích xuất tất cả các tệp trong tệp .tar.gz?


628
2018-02-08 22:50


gốc




Các câu trả lời:


Kiểu man tar để biết thêm thông tin, nhưng lệnh này nên thực hiện thủ thuật:

tar -xvzf community_images.tar.gz

Để giải thích thêm một chút, tar thu thập tất cả các tệp thành một gói, community_images.tar. Chương trình gzip áp dụng nén, do đó phần mở rộng gz. Vì vậy, lệnh thực hiện một vài điều sau:

  • f: đây phải là lá cờ cuối cùng của lệnh và tar file phải ngay sau đó. Nó cho tar biết tên và đường dẫn của tập tin nén.
  • z: cho tar giải nén kho lưu trữ bằng gzip
  • x: tar có thể thu thập tệp hoặc excắt chúng. x sau này.
  • v: làm cho tar nói rất nhiều. Vđầu ra erbose cho bạn thấy tất cả các tệp đang được trích xuất.

1059
2018-02-08 22:57



@Shiki Tôi đã thấy bản chỉnh sửa được đề xuất của bạn. Tôi không nghĩ đó là một sự thay đổi thích hợp, tôi thích cách tôi giải thích công cụ này. tôi làm nghĩ rằng tar -xf đề xuất sẽ đưa ra một câu trả lời bổ sung tuyệt vời. - djeikyb
Đây là một trong những giải thích tốt hơn trong số hàng triệu câu hỏi tương tự - JohnMerlino
@KasunSiyambalapitiya Theo mặc định, kết thúc trong thư mục hiện tại. Xem thêm man tar; Tìm kiếm -C Tùy chọn. Hoặc có thể xem câu trả lời khác - djeikyb
@nikoss tôi thêm v chuyển đổi mọi lúc vì tôi như xem danh sách tệp trong khi trích xuất. việc dạy học này cũng chuẩn bị cho người đọc các lệnh tar khác như tar -tvf foo.tar hiển thị nội dung lưu trữ mà không cần giải nén. - djeikyb
Làm tôi nhớ đến bài viết của xckd về tar.Tôi phải quay lại mỗi lần. - mgarey


Nếu bạn muốn các tệp được trích xuất đến một đích cụ thể bạn có thể thêm -C /destination/path/
Đảm bảo bạn tạo thư mục trước, trong trường hợp này: ~ / Ảnh / Cộng đồng

Thí dụ:

mkdir ~/Pictures/Community
tar xf community_images.tar.gz -C /home/emmys/Pictures/Community/

Bạn có thể dễ dàng ghi nhớ nó nếu bạn cân nhắc tar đến e X đường một F ile

gif of process done at terminal

Chú thích: Hãy nhớ rằng bạn có thể tìm kiếm bên trong các trang người đàn ông với ?+ cụm từ để tìm kiếm và sau đó n và N để chuyển sang ví dụ tiếp theo hoặc trước đó của cụm từ bạn đang tìm kiếm.


131
2017-08-20 11:02



đừng quên C cho "change thư mục "! Ngoài ra, tôi cảm thấy nó tốt hơn không để trộn hyphen và không hyphen tùy chọn (đặc biệt là khó hiểu khi sử dụng ps). - djeikyb
Tại sao nó không giống như mọi mệnh lệnh khác? - Jan M.
Tôi yêu gợi ý của bạn 'tar to e X đường một F ile' - Nam G VU
1+ cho gif động - Nick Steele


Tại một số điểm tar đã được nâng cấp để tự động giải nén. Tất cả những gì bạn cần bây giờ là:

tar xf community_images.tar.gz

Cùng một lời giải thích được áp dụng:

  • f: đây phải là lá cờ cuối cùng của lệnh và tar file phải ngay sau đó. Nó cho tar biết tên và đường dẫn của tập tin nén.
  • x: exkéo các tập tin.

Lưu ý việc thiếu dấu gạch ngang cho các cờ lệnh. Điều này là bởi vì hầu hết các phiên bản của tar cho phép cả hai tùy chọn kiểu gnu và bsd (đơn giản, gnu yêu cầu một dấu nối, bsd không).


89
2017-12-31 23:54



Có tài liệu nào về điều này không? Tôi đã tìm kiếm trên tất cả để tham khảo này, tôi không bao giờ sử dụng lá cờ -z và mọi thứ được gzipped vì vậy tôi đã lo lắng nếu tôi đã không được nén tarballs của tôi ở tất cả, haha. Cảm ơn. - neurosnap
@neurosnap nhìn thấy hướng dẫn sử dụng gnu và của hướng dẫn sử dụng bsd - djeikyb
Có lẽ sẽ tốt hơn nếu bạn chỉnh sửa câu trả lời gốc của mình. - Seth♦
@Seth nó cảm thấy / cảm thấy khác biệt, đủ để được một câu trả lời riêng biệt, đặc biệt là trong bối cảnh của các chỉnh sửa phá hoại mà khiêu khích nó. Tôi sẽ suy nghĩ lại nó sau khi làm việc mặc dù, có thể là một cách đơn giản để hợp nhất hơn tôi nghĩ ban đầu. - djeikyb
@EnricoMariaDeAngelis bsd tar kể từ ít nhất năm 2004 và gnu tar kể từ ít nhất năm 2010 đã hỗ trợ tự động chọn một bộ giải nén. nó có thể không có phiên bản "gần đây" (thế kỷ này? nineties +?) của tar yêu cầu bằng tay chọn một bộ giải nén. - djeikyb


Trong trường hợp bạn không thể trích xuất .tar.gz tập tin sử dụng

tar -xvzf fileName.tar.gz

Thử trích xuất bằng

tar xf fileName.tar.gz

4
2018-01-05 06:29



nếu nó là một tệp tar gzipped, lệnh đầu tiên sẽ luôn hoạt động. nếu nó không hoạt động, bạn không có tệp tar gzipped. lệnh sau là một khuyến nghị tuyệt vời cho những người không quan tâm đến thuật toán nén được sử dụng trên tệp tar của họ. - djeikyb