Phương pháp nén tốt nhất?


53

Tôi muốn nén một thư mục 16 GB, nhưng phương pháp tốt nhất là gì? tar.gz? tar.bz2 rar? 7z? Lưu trữ sẽ nhỏ hơn nếu lần đầu tiên tôi nén trong một phương thức, sau đó sao chép kho lưu trữ đã nén sang một thư mục mới, sau đó được nén lại trong một số phương thức khác? Tôi cần làm cho nó vừa với DVD (đầu ra có thể là 8,5 GB, đừng nhớ) nhưng đặt "4370 MB" làm cho tệp nén trở thành một phần 2,5 GB.

BTW, phương pháp nén mặc định trên Ubuntu là gì?

Câu trả lời:


70

Mặc định là gz. Các kết quả tốt nhất tôi nhận được với 7zmặc dù.

Đây là kết quả cho một hộp chứa hộp ảo 1,4 Gb:

nhập mô tả hình ảnh ở đây

Nén tốt nhất - kích thước tính bằng MB:

7z 493
hiếm 523
bz2 592
Trung 607
gz 614
Z 614
zip 614
.arj 615
lzo 737
sở thú 890

Nguồn

nhập mô tả hình ảnh ở đây

Tải về

 sudo apt-get install p7zip-full

Cảm ơn, tôi đã cài đặt 7z và rar thông qua Trung tâm phần mềm. Tôi sẽ thử với 7z.
Amanda

1
Những kết quả này đến từ đâu? Đối với mọi thuật toán, tỷ lệ nén và tốc độ phụ thuộc rất nhiều vào những gì bạn đang cố nén. Hãy thử nén một số dữ liệu đến từ /dev/urandom: bạn sẽ nhận được kết quả khác nhau trong mỗi lần thử. Hoặc thử /dev/zero: bzip2 là người chiến thắng (cho tỷ lệ).
Andrea Corbellini

1
@AndreaCorbellini liên kết nằm trong câu trả lời, vậy hãy nhấp vào nó!? và như tôi đã nói: nó dựa trên một hộp chứa 1.4 hộp ảo. Tôi đồng ý rằng việc nén phụ thuộc rất nhiều vào các tệp đó là gì nhưng từ một vài năm kinh nghiệm, 7z dường như tốt hơn cho các tệp tôi có xu hướng (chủ yếu là các tệp dữ liệu nhị phân và phần mềm)
Rinzwind

1
@Rinzwind: Tôi thực sự xin lỗi, tôi đã không thấy liên kết Nguồn .
Andrea Corbellini

1
@AndreaCorbellini không sao;) hãy hy vọng amanda báo cáo lại kết quả: +
Rinzwind

14

Câu hỏi này rất cũ, nhưng có lẽ ai đó thấy giải pháp này hữu ích:

Sử dụng rzip, sau tar. Đầu tiên, nó nén 900 MB khối dữ liệu lớn bằng phương pháp từ điển và sau đó nó xử lý dữ liệu đã được dọn sạch bzip2. Nó nhanh hơn nhiều so với các công cụ nén mạnh khác ( bzip2, lzma) và một số tệp mà nó nén thậm chí còn tốt hơn bzip2hoặc lzma.

Có, gzlà công cụ nén mặc định trên Linux. Nó rất nhanh và mặc dù tuổi của nó vẫn cho kết quả rất tốt trong việc nén các tệp văn bản như mã nguồn. Một công cụ tiêu chuẩn khác là bzip2, mặc dù nó chậm hơn nhiều.

Ngoài ra: lrzip mới hơn và mở rộng nguyên tắc của rzip. Nó thậm chí còn hỗ trợ kích thước khối không giới hạn và lựa chọn các phương thức nén (LZMA, Bzip2, Gzip, LZO, ZPAQ hoặc không có). LZMA là tiêu chuẩn. Để sao lưu hoặc nếu bạn chia sẻ nhiều dữ liệu với người dùng Linux / BSD khác, nó có thể rất hữu ích.


Tôi nghĩ bạn có nghĩa là khối 900 kB? 900 MB sẽ hơi lớn ...
Chỉ huy Byte

1
Nó thực sự là 900 MB. Xem en.wikipedia.org/wiki/Rzip
user258532

2

Tôi chọn cho a LZMA. Nó có chi phí byte nhỏ nhất và có tỷ lệ nén mạnh. So sánh giữa ZIP và LZMA: Tôi đã tạo hai tệp seq.txtcó mã PHP

$s = '0123456789'; $str = ''; for ($i=0; $i < 1000000; $i++) $str .= $s[$i%10].($i%10==9 ? "\n":""); file_put_contents('seq.txt', $str);

chứa các khối lặp lại gồm 0,9 chữ số ~ 1Mb dữ liệu và rnd.txtvới mã PHP

$s = '0123456789'; $str = ''; for ($i=0; $i < 1000000; $i++) $str .= $s[rand(0,9)].($i%10==9 ? "\n":""); file_put_contents('rnd.txt', $str);

chứa các khối ngẫu nhiên gồm 0,9 chữ số ~ 1Mb dữ liệu.

Kết quả nén:

  • seq.txt, rnd.txt - 1100000 byte
  • seq.txt.zip - 2502 byte
  • rnd.txt.zip - 515957 byte
  • seq.txt.lzma - 257 byte
  • rnd.txt.lzma - 484939 byte

Tỷ lệ nén:

  • ZIP -> "seq.txt" -> 99,772%
  • ZIP -> "rnd.txt" -> 53.094%
  • LZMA -> "seq.txt" -> 99.976%
  • LZMA -> "rnd.txt" -> 55,914%

Vì vậy, LZMA đã nén dữ liệu tuần tự hiệu quả hơn 0,2% so với ZIP
và dữ liệu ngẫu nhiên hiệu quả hơn 2,8% so với ZIP.

Để chắc chắn LZMA thắng!

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.