Cách nhanh nhất để trích xuất tar.gz


42

Có cách nào để giải nén một tập tin tar.gz nhanh hơn tar -zxvf filenameherekhông?

Chúng tôi có các tệp lớn và cố gắng tối ưu hóa hoạt động.


2
Bạn có thấy rằng $ tar -zxvfphương thức này bị ràng buộc bởi IO hoặc CPU không?
EEAA

1
Tin CPU, làm thế nào tôi có thể kiểm tra?
Justin

5
Không liên quan trực tiếp, nhưng 'z' đã không được yêu cầu kể từ năm 2004 / tar v1.1.5 gnu.org/software/tar/#TOCrelease :)
JamesHannah

Câu trả lời:


57

pigz là phiên bản song song của gzip. Mặc dù nó chỉ sử dụng một luồng duy nhất để giải nén, nhưng nó bắt đầu 3 luồng bổ sung để đọc, viết và kiểm tra tính toán. Kết quả của bạn có thể khác nhau nhưng chúng tôi đã thấy sự cải thiện đáng kể trong việc giải nén một số bộ dữ liệu của chúng tôi. Khi bạn cài đặt pigz, tệp tar có thể được giải nén bằng:

mục tiêu pigz -dc.tar.gz | tar xf -


11
+1. FWIW, bạn cũng có thể viết như là tar -xvf --use-compress-program=pigz filenamehere. ( -zsố tiền là --use-compress-program=gzip.) Ngoài ra, bạn thậm chí có thể tạo gzipliên kết tượng trưng pigzvà tiếp tục sử dụng -zxvf.
ruakh

2
@ruakh, tôi phải đặt -xfsau --use-compress-program=pigz, hoặc tôi gặp lỗi. Vì một số lý do, nó không nhanh hơn việc sử dụng gzip.
jonderry

bzip2pbzip2( pcho song song). tar --use-compress-program=pbzip2 -xvf file.tar.bz2.
alfC

Có cách nào để sử dụng pvlệnh để hiển thị tiến trình, hoặc tương đương, trong khi cũng sử dụng --use-compress-program=pigzcờ không? Trong quá trình nén, tôi có thể làm gnutar --use-compress-program="pigz | pv" -cf target.tar.gz YourData, nhưng không chắc chắn làm thế nào để thực hiện điều này trong khi giải nén / giải nén.
Stefan Lasiewski

13

nếu có nhiều tập tin nhỏ trong bóng tar, hãy hủy tham số 'v', thử lại!


3
Tôi không bao giờ sử dụng -v param. Không biết tại sao mọi người cần nhiều tiếng ồn trong giao diện điều khiển.
Eimantas

9
@Eimantas Khi bạn mở khóa một cái gì đó có chứa nhiều tệp nhiều gigabyte, bạn sẽ muốn một số dấu hiệu của sự tiến bộ. :)
Michael Hampton

@TimHughes: điều đó thực sự tuyệt vời để biết, xin vui lòng gửi dưới dạng một câu trả lời riêng biệt!
smci

Michael Hampton nếu bạn có một tệp nhiều gigabyte nhưng được trộn với một danh sách lớn các tệp nhỏ bạn có lý do chính đáng để không sử dụng -v, trong các thử nghiệm cục bộ của tôi, nó làm cho tar rất chậm đặc biệt nếu bạn có tar chạy trong máy chủ từ xa thông qua thiết bị đầu cuối, những gì tôi làm là để xem thư mục du -s để tôi có thể xem thư mục đang phát triển ...
Luciano Andress Martini

Nó có thể có giá trị sử dụng --checkpoint=NUMBER( hiển thị thông báo tiến trình mỗi bản ghi SỐ ) thay vì -v.
Stefan Lasiewski

6

Nếu bạn muốn thấy sự tiến bộ, hãy sử dụng một cái gì đó như pv. Đây là một ví dụ:

pigz -dc mysql-binary-backup.tar.gz | pv | 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.