làm thế nào để tăng và trích xuất một .tar.bz2 bằng cách sử dụng công cụ dòng lệnh 7-zip


7

Tôi có một tệp .tar.bz2 mà tôi muốn giải nén và giải nén thông qua công cụ dòng lệnh 7-zip.

Vì vậy, về cơ bản tôi đang tìm kiếm tương đương với

tar -xjf foo.tar.bz2

với 7-zip, chỉ có tùy chọn "x" để giải nén, do đó, thực hiện

7z x foo.tar.bz2

cung cấp cho tôi tệp foo.tar bị thổi phồng thay vì giải nén tất cả các thư mục bên trong tar. Tùy chọn tương ứng cho 7z là gì?


Bạn có thể thêm lý do tại sao bạn muốn làm điều đó thông qua 7-zip khi tar có thể xử lý nó thanh lịch hơn.
bagavadhar

Câu trả lời:


3

Với 7zip, bạn phải chạy lệnh hai lần, một lần để giải nén và một lần nữa để giải nén. Định dạng tệp tar chỉ là "mốt" của mọi thứ bị kẹt từ đầu đến cuối. Sau đó, toàn bộ tệp tar được nén bằng các thuật toán nén khác nhau, trong ví dụ bzip của bạn. Về cơ bản các tập tin kết quả có hai lớp. Khi bạn "giải nén" lớp bzip bạn nhận được một tệp tar, sau đó khi bạn giải nén tệp tar, bạn sẽ nhận được một loạt các tệp riêng lẻ.

7zip không xử lý nhiều lớp cùng một lúc, mặc dù nó có thể xử lý cả hai lớp:

7z x foo.tar.bz2
7z x foo.tar

Trên thực tế, các công cụ unix tiêu chuẩn hoạt động theo cùng một cách:

bunzip2 foo.tar.bz2
tar xf foo.tar

Tuy nhiên, tarlệnh unix có các tính năng tiện lợi gọi các bước nén và giải nén thứ cấp bằng cách sử dụng một chương trình khác trước / sau khi nó xử lý phần tar. Về cơ bản các -jđối số gọi bzip2/ bunzip2, bạn chỉ không thấy bước thứ hai. Tương tự như vậy -zsẽ gọi gzip/ gunzip, v.v.


3

Trong khi bạn không thể thực hiện điều này trong một lệnh, bạn có thể sử dụng đường ống shell để xâu chuỗi hai lệnh 7z thành một dòng lệnh như vậy:

7z e -so .\Downloads\enron_mongo.tar.bz2 | 7z e -si -ttar

2

Làm thế nào về một phiên bản ngắn hơn của sự kết hợp 7z và tar sử dụng tiêu chuẩn và ống dẫn?

# 7z x -so my-compressed-tarball.tar.bz2| tar xf -

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.