Phần mềm nén tập tin nào cho linux giúp giảm kích thước cao nhất? [đóng cửa]


51

Tôi làm một tấn nén tập tin. Hầu hết những thứ tôi đang nén chỉ là mã, vì vậy tôi cần sử dụng mất ít nén. Tôi đã tự hỏi nếu có bất cứ điều gì cung cấp giảm kích thước tốt hơn 7zip. Không quan trọng là phải mất bao lâu để nén hoặc giải nén, kích thước mới là vấn đề. Có ai biết một phần mềm như thế này trong Linux không? Hoặc là 7zip là tốt nhất?

Câu trả lời:


37

7ziplà một máy đầm (như PKZIP) hơn là máy nén. Nó có sẵn cho Linux, nhưng nó chỉ có thể tạo lưu trữ nén trong các tệp thông thường, chẳng hạn, nó không thể nén một luồng. Nó không thể lưu trữ hầu hết các thuộc tính tệp Unix như quyền sở hữu, ACL, thuộc tính mở rộng, liên kết cứng ...

Trên Linux, với tư cách là một máy nén , bạn đã xzsử dụng thuật toán nén tương tự như 7zip(LZMA2). Bạn có thể sử dụng nó để nén lưu trữ tar.

Giống như gzipbzip2, có một biến thể song songpixz có thể tận dụng một số bộ xử lý để tăng tốc độ nén ( xzcũng có thể thực hiện nó một cách tự nhiên kể từ phiên bản 5.2.0 với -Ttùy chọn). Các pixzbiến thể cũng hỗ trợ lập chỉ mục một nén tarkho lưu trữ có nghĩa là nó có thể để trích xuất một file duy nhất mà không cần phải giải nén các tập tin ngay từ đầu.


6
Bạn có thể mở rộng về sự khác biệt giữa "máy đầm" và "máy nén" mà bạn đang thực hiện ở đây không?
mattdm

2
@mattdm, một máy nén chỉ nén, một máy nén sẽ nén một số thứ vào một kho lưu trữ nén.
Stéphane Chazelas

2
@mattdm, lạ. Đó là một thuật ngữ rất phổ biến và khác biệt trong những năm 90, trông giống như từ một tìm kiếm google, nó không còn là vấn đề nữa.
Stéphane Chazelas

6
Có lẽ đó là một điều DOS? Trong Unix, sự khác biệt giữa nén và lưu trữ thường được thực hiện (như bạn cũng nói), nhưng tôi chưa bao giờ nghe thấy "máy đầm".
mattdm

1
@mattdm, tốt, nhỏ gọn là lưu trữ + nén (có thể với lập chỉ mục, có thể các thành viên được nén riêng), lưu trữ không ngụ ý nén. Nó không phải là một thứ của DOS, nhưng có thể đó là một thứ của Pháp. Googling usenet lưu trữ, tôi dường như chỉ bắt gặp các bài viết của tôi, vì vậy nó có thể là phát minh của tôi, mặc dù tôi tin chắc rằng nó không phải.
Stéphane Chazelas

65

lrzip là thứ bạn thực sự đang tìm kiếm, đặc biệt nếu bạn đang nén mã nguồn!

Trích dẫn README:

Đây là một chương trình nén được tối ưu hóa cho các tệp lớn. Tệp càng lớn và bạn càng có nhiều bộ nhớ, lợi thế nén này sẽ cung cấp càng tốt, đặc biệt là khi các tệp lớn hơn 100MB. Lợi thế có thể được chọn là kích thước (nhỏ hơn nhiều so với bzip2) hoặc tốc độ (nhanh hơn nhiều so với bzip2). [...] Tính năng độc đáo của lrzip là nó cố gắng tận dụng tối đa ram có sẵn trong hệ thống của bạn mọi lúc để có lợi ích tối đa.

lrzip hoạt động bằng cách quét và loại bỏ bất kỳ dự phòng dữ liệu đường dài nào bằng thuật toán dựa trên rzip, sau đó nén dữ liệu không dự phòng.

Con Kolivas cung cấp một ví dụ tuyệt vời trong Danh sách gửi thư hạt nhân Linux ; trong đó anh ta nén một tarball 10,3 GB gồm bốn mươi nhân Linux phát hành xuống còn 163,9 MB (1,6%) và nhanh hơn xz. Anh ta thậm chí còn không sử dụng thuật toán vượt qua thứ hai mạnh mẽ nhất!

Tôi chắc chắn bạn sẽ có kết quả tuyệt vời khi nén tarball lớn mã nguồn :)

sudo apt-get install lrzip

Ví dụ (sử dụng mặc định cho các tùy chọn khác):

Siêu nén, chó chậm:

lrzip -z file

Đối với các thư mục, chỉ cần thay đổi lrzipcholrztar


1
Tôi cũng có thể dự thi lrzipcũng hoạt động thực sự tuyệt vời để sao lưu các tar/cpio/paxcây tệp hệ thống, bởi vì chúng thường chứa rất nhiều dự phòng tầm xa, một thứ lrzipthực sự tốt trong việc nén.
Franki

10
Tôi đã thử lrzippixztrên tệp văn bản 19 GB. Cả hai mất khoảng nửa giờ để nén nó (trên máy hexa-core), nhưng lrztệp có kích thước bằng một nửa xztệp (2,7 so với 4,4 GB). Vì vậy, một phiếu bầu khác cho câu trả lời này thay thế.
fnl

3
@Franki bởi 'cuộc thi', ý bạn là 'chứng thực'?
mitchus

Cảm thấy giống như Piper Piper!
chối Vitali

1
Bạn có biết sự khác biệt giữa lrzip và rzip không? rzip trông giống như nó được phát hành vào năm 1998 được thiết kế để làm tốt nhất trên các tệp rất lớn với độ dự phòng đường dài, vì vậy nó có vẻ tương tự như lrzip - chỉ tự hỏi liệu lrzip có nguồn gốc từ rzip không? (rzip từ rzip.samba.org )
Astara

6

Nếu bạn đang tìm kiếm giảm kích thước lớn nhất bất kể tốc độ nén, LZMAcó thể là lựa chọn tốt nhất của bạn.

Khi so sánh các mức nén khác nhau, nhìn chung sự đánh đổi là thời gian so với kích thước. gzipcó xu hướng nén và giải nén tương đối nhanh trong khi vẫn đạt tỷ lệ nén tốt. bzip2là hơi chậm hơn gzipcả về thời gian nén và giải nén, nhưng mang lại tỷ lệ nén thậm chí còn lớn hơn. LZMAcó thời gian nén lâu nhất nhưng mang lại tỷ lệ tốt nhất trong khi cũng có tốc độ giải nén vượt trội hơn so với bzip2.

Nguồn: http://bashitout.com/2009/08/30/Linux-Compression-Comparison-GZIP-vs-BZIP2-vs-LZMA-vs-ZIP-vs-Compress.html

http://tukaani.org/lzma/benchmark.html


1
Tôi cần phải không đồng ý về điều này! Trình nén tệp lossless cung cấp hệ số giảm lớn nhất bất kể tốc độ nén hoạt động trên GNU / Linux có thể là zpaqhoặc paq8l. Tuy nhiên, chúng chậm đến mức chúng không có tác dụng đối với hầu hết các ứng dụng trong thế giới thực.
Franki

@Franki tuyệt vời sudo apt-get install zpaq, tôi đã thực hiện một số thử nghiệm, theo wiki , ứng dụng đó sẽ là ứng dụng mới nhất năm 2009, nhưng nó vẫn thua kgb (sử dụng PAQ6), nhưng kgb chậm hơn NHIỀU ...
Aquarius Power

@Franki thực sự, tôi chỉ thấy rằng zpaq pvc/usr/share/doc/zpaq/examples/max.cfg file.zpaq file.tarnén nhiều hơnkgb -9
Sức mạnh Bảo Bình

4

(câu trả lời được cập nhật) Nếu thời gian không thành vấn đề, hãy sử dụng ZPAQ v1.10 (hoặc mới hơn) ví dụ:
zpaq pvc/usr/share/doc/zpaq/examples/max.cfg file.zpaq file.tar (vị trí tệp max.cfg có thể thay đổi, kiểm tra danh sách tệp gói đã cài đặt của bạn)

zpaqthực sự nén nhiều hơn kgb -9 newFileName.kgb yourFileName.tar.
Điều đó dựa trên thuật toán cũ hơn PAQ6 , và rất chậm ...
Tôi đã thử nghiệm với tất cả các máy nén khác như 7zip, lrzip, bzip2, kgb .. và zpaq được nén nhất!

Nếu kgbvẫn khiến bạn quan tâm: (vì đó là lựa chọn ban đầu của tôi cho câu trả lời này, vì vậy tôi đang giữ thông tin ở đây)
Ubuntu 14.04 có kgb 1.0b4 , hãy chạy sudo apt-get install kgbđể cài đặt nó.

Dưới đây là về một phiên bản windows mà bạn có thể thử chạy / biên dịch kgbtrên linux, nhưng tôi đã không thành công.
Phiên bản 2 beta2 có thể được tìm thấy trên SourceForge , nhưng không có tệp nhị phân Linux nào khả dụng. Bạn có thể thử chạy nó trong bảng điều khiển với wine kgb2_console.exe -a7 -m9(phương thức -a6 -m9dường như tương đương với phương thức tốt nhất trong 1.0b4, -a7là mới trong 2 beta2). Mặc dù tôi đã có sự ổn định tốt hơn bằng cách cài đặt .NET 2.0 với winetricks và chạy wine "KGB Archiver 2 .net.exe"(Tôi không thích làm điều đó một chút, vì vậy tôi sẽ gắn bó với Linux 1.0b4 nguyên bản có kết quả gần như 2 beta2).
Dù sao, phiên bản 2 beta2 cũng xứng đáng là phiên bản gốc của Linux! Có thể một cái gì đó có thể được thực hiện với MinGW, hãy xem điều này , nhưng lệnh này vẫn thất bại nặng nề:i586-mingw32msvc-g++ kgb2_console.cpp -o kgb. Có thể thử biên dịch nó với dmcs(Mono)? thấy mẹo này .


2

7zip không phải là công nghệ độc đáo, nhưng hỗ trợ một số phương pháp nén khác nhau (xem wikipedia 7z về điều đó).

Một tập hợp các bài kiểm tra đã được thực hiện với các công cụ khác nhau dành riêng cho các tệp nguồn C. Tôi không chắc chắn công cụ nào tồn tại cho Linux nếu chúng vẫn tồn tại. Tuy nhiên, bạn có thể lưu ý rằng thuật toán tốt nhất là PPM với các sửa đổi (PPMII, sau đó là PPMZ).

Nếu bạn quan tâm đến các công cụ, bạn có thể duyệt trang web, đó là tiếng Nga nhưng google dịch có thể giúp ích. Có một khoản tiền lớn của nhị phân , mà bạn có thể sử dụng (hoặc sẽ không thể) từ Linux với rượu, nếu thực sự cần thiết.

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.