Các tùy chọn tốt nhất để sử dụng khi nén tệp bằng 7 Zip là gì?


62

Tôi thường phải thu thập các tệp nhật ký và tải chúng lên một máy chủ trung tâm (Thuộc sở hữu của một công ty khác). Máy chủ trung tâm có giới hạn kích thước của tệp, vì vậy tôi đang cố gắng tạo tệp nhỏ nhất có thể vẫn ở định dạng zip.

Cài đặt tốt nhất để sử dụng khi nén tệp văn bản sang định dạng zip khi nhu cầu duy nhất của tôi là kích thước tệp nhỏ?

Tùy chọn 7zip

Tôi đã thực hiện nén cực kỳ rõ ràng và được chọn, và tôi đã nhận thấy rằng LZMA thực hiện công việc tốt hơn so với giảm phát, nhưng có quá nhiều lựa chọn hoán vị khác để tôi kiểm tra tất cả.


1
Là chia zip trong nhiều tập tin là một tùy chọn?
JaredMcAteer

3
Ngay sau khi bạn chọn bất cứ thứ gì ngoại trừ Deflateđịnh dạng, nó không phải là tệp .zip "bình thường" nữa mà là tệp zip "mở rộng", được tiên phong bởi WinZip. Ban đầu, họ giữ phần mở rộng dưới dạng .zip, với nhiều cấu tạo (vì hầu hết các công cụ xử lý zip thông thường không thể xử lý chúng), nhưng hầu hết các trình lưu trữ sử dụng .zipx để phân biệt chúng với các tệp .zip truyền thống. Nếu bạn có thể sử dụng LZMA, hãy chuyển sang .7z và chọn PPMd - nó sẽ nén tốt hơn (và nhanh hơn!) Cho các tệp văn bản.
afrazier

1
@afrazier: "Đặc tả định dạng tệp .ZIP ghi lại các phương thức nén sau: được lưu trữ (không nén), Shrunk, Giảm (phương thức 1-4), Imploding, Tokenizing, Deflated, Deflate64, bzip2, LZMA (EFS), WavPack, PPMd . " vi.wikipedia.org/wiki/Zip_%28file_format%29#Compression_methods
endolith

1
@endolith: bzip2, lzma, wv và ppmd đều là những bổ sung rất gần đây cho định dạng tệp. Thậm chí không an toàn khi cho rằng người nhận của bạn có thể xử lý deflate64, ít hơn bất kỳ thứ gì mới hơn.
afrazier

1
định nghĩa "công cụ zip bình thường". Hầu hết các "công cụ zip thông thường" hiện nay như 7z và winrar có thể trích xuất các tệp 7z.
phuclv

Câu trả lời:


61

Để tạo tệp ZIP tiêu chuẩn nhỏ nhất mà 7-Zip có thể tạo, hãy thử:

7z a -mm=Deflate -mfb=258 -mpass=15 -r foo.zip C:\Path\To\Files\*

Nguồn: Làm thế nào tôi có thể đạt được nén ZIP tiêu chuẩn, tốt nhất?

Mặt khác, nếu bạn không quan tâm đến tiêu chuẩn ZIP, hãy sử dụng các cài đặt cực sau:

7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on archive.7z dir1

Đó là:

-t7z   7z archive

-m0=lzma
       lzma method

-mx=9  level of compression = 9 (Ultra)

-mfb=64
       number of fast bytes for LZMA = 64
-md=32m
       dictionary size = 32 megabytes

-ms=on solid archive = on

2
@Tek: Tại sao? Nó không phải là một tốt. Câu hỏi là về việc sử dụng "định dạng ZIP tiêu chuẩn", vì vậy câu trả lời không nên chỉ định LZMA. -ms = on là cho .7z, không phải tệp zip tiêu chuẩn. -md có liên quan đến BZip2, vì vậy tôi không hy vọng nó sẽ ảnh hưởng đến ZIP (hoặc thậm chí LZMA). -mfb = 64 là một giá trị không được tối ưu hóa: -mfb = 258 làm cho các tệp zip nhỏ hơn. Và câu trả lời này thậm chí không đề cập đến -mpass = 15 có thể ảnh hưởng đến các tệp zip. Đây là một câu trả lời được định dạng độc đáo, thật không may, sai theo nhiều cách.
TUYỆT VỜI 8/11/2015

6
Tôi sẽ sử dụng lzma2
Lance Badger

Nếu bạn nhìn vào Câu hỏi thường gặp 7-zip, nó nói rằng các phiên bản 7z mới hơn có thể có hiệu suất kém hơn so với các phiên bản cũ hơn trong một số trường hợp. Đọc FAQ để biết thêm chi tiết, nhưng trong thời gian ngắn, hãy sử dụng 'qs' trong trường Tham số trong GUI hoặc sử dụng -mqs trong phiên bản dòng lệnh để sử dụng sắp xếp cũ theo phương pháp mở rộng tệp. 7-zip.org/faq.html .
drojf

13

Nếu bạn có thể sử dụng định dạng .7z thay vì chỉ .zip, tôi chỉ cần sử dụng PPMD với các tùy chọn sau và để mọi thứ khác như được đặt theo Mức nén:

  • Định dạng lưu trữ: 7z
  • Phương pháp nén: PPMD
  • Mức nén: Ultra

Tôi thường xuyên nén nhật ký máy chủ / văn bản (60MB +) bằng các tùy chọn này và chúng thường xuất hiện ở mức 1-2% kích thước ban đầu.


Đối với văn bản như tệp nhật ký, ppmd chắc chắn là cách để đi. Tuy nhiên, câu hỏi đề cập rằng nó cần ở định dạng zip, có thể không hoạt động với PPMD.
Brian Minton

Chỉ cần thử zip với PPMD ​​và Windows Explorer sẽ mở ra nội dung mà không có khiếu nại ở đây trên Windows 7
Umber Ferrule

3
Tôi cũng nhận thấy điều đó. Nó mở nội dung lên tốt. Tuy nhiên, khi tôi thực sự cố gắng xem một trong các tệp bên trong tệp zip, nó đã thất bại.
Brian Minton

2
Tại sao phương pháp nén ưu việt PPMD ​​cho các tệp văn bản?
dùng598527

1
LZMA2 cho kết quả tốt hơn cho các tệp văn bản so với PPMD.
T3rm1

7

Tôi so sánh với db.fdb 1,2 GB (1236598784 B) trong máy chủ Ubuntu 14.04.03 với p7zip [64] 9.20 trên VM:

1. 7z a -mx=9 1.7z db.fdb
2. 7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on 2.7z db.fdb
3. 7z a -t7z -m0=lzma -mx=9 -mfb=258 -md=32m -ms=on 3.7z db.fdb
4. 7z a -t7z -m0=lzma -mx=9 -mfb=258 -md=32m -ms=on -pass=15 4.7z db.fdb
5. 7z a -mx=9 -mmt=on 5.7z db.fdb
6. 7z a -t7z -m0=lzma -mx=9 -mfb=258 -md=32m -ms=on -mmt=on 6.7z db.fdb

và có kết quả đó:

1.7z 96 MB (100108731 B) with 6' 25"
2.7z 95 MB ( 99520375 B) with 5' 18"
3.7z 93 MB ( 97512311 B) with 9' 19"
4.7z 93 MB ( 97512345 B) with 9' 40"
5.7z 96 MB (100108731 B) with 5' 26"
6.7z 93 MB ( 97512311 B) with 9' 09"

Tôi nghĩ rằng phương pháp thứ hai hoạt động tốt = (gần như) nén tốt nhất với thời gian tốt nhất. Nhưng để "xem" tốt nhất và dễ nhớ là phương pháp đầu tiên - với các tệp nhỏ và không có điểm nén tối đa. Từ 2 đến 3 phương pháp, chúng tôi không nhận được 7z nhỏ hơn nhưng phải trả gần gấp đôi thời gian để nén. Bất cứ ai quyết định với riêng mình.


7

Sau nhiều thử nghiệm, đào sâu vào tài liệu 7zip chi tiết và đọc một số mã nguồn 7z liên quan đến các tham số LZMA2 nâng cao, đây là một phương pháp tốt hơn dưới đây. Nó giảm một số tệp thử nghiệm trong thế giới thực 1GB tốt hơn 2 đến 4 lần so với các giải pháp được chấp nhận trước đây được đăng ở đây hoặc thậm chí trong trang web 7z.

7z a -t7z -mx=9 -mfb=273 -ms -md=31 -myx=9 -mtm=- -mmt -mmtf -md=1536m -mmf=bt3 -mmc=10000 -mpb=0 -mlc=0 archive.7z inputfileordir

Việc nén LZMA2 được giả định ở đây, nhưng bạn có thể có được hiệu năng cao hơn nữa trong 7zip bằng cách chuyển các tùy chọn LZMA2 nâng cao như -m0=LZMA2:27, hoặc -m0=LZMA2:d25, hoặc một mảng các tham số như

-m0=BCJ2 -m1=LZMA:d25 -m2=LZMA:d19 -m3=LZMA:d19 -mb0:1

Các tham số như vậy dường như không được tôn trọng bởi các phiên bản 7z mà tôi đã thử nghiệm, nhưng bạn có thể muốn khám phá thêm hoặc vá mã 7z để phân tích chính xác chúng. Hoặc có thể nó được cho là hoạt động và chỉ bị hỏng trong các bản dựng đã được thử nghiệm.


wow, điều này đã tạo ra một sự khác biệt thực sự lớn. Đối với kho lưu trữ của tôi, tôi đã thử nghiệm rất nhiều đề xuất khác, bao gồm các câu trả lời khác ở đây và kết quả tốt nhất tôi nhận được là 99 MB, so với 85 MB khi sử dụng các cài đặt này.
dùng9399

0

Đặt trường "split to volume, byte" thành kích thước tệp tối đa được phép của máy chủ (theo byte, tôi nghĩ, mặc dù có vẻ như nó chấp nhận các chữ viết tắt phổ biến như "KB" và "MB"). Nếu tệp zip vượt quá kích thước đó, 7-zip sẽ tự động phân chia thành nhiều tệp, chẳng hạn như integration_serviceLog.zip.001 , integration_serviceLog.zip.002 , v.v. đĩa mềm.) Bạn sẽ cần tất cả các tệp có mặt để giải nén chúng. Sử dụng điều đó thay vì lo lắng về cài đặt nén tuyệt đối tốt nhất để sử dụng cho bất kỳ nhóm tệp cụ thể nào, bởi vì những gì tốt nhất cho một tệp có thể khác nhau đối với một tệp khác và bạn không muốn phải trải qua điều này mỗi khi bạn cần sao chép nhật ký.


1
Tôi lo lắng về việc những người ở phía bên kia sẽ giải nén các tập tin. Tôi cần nó đơn giản nhất có thể cho họ. Bạn có biết nếu bạn có thể giải nén các phần được chia bằng cách sử dụng zip zip tích hợp hoặc gzip không?
jjnguy

Rõ ràng, không, tính năng thư mục zip Windows tích hợp không thực hiện các tệp zip được kéo dài. Điều đó thật tệ, vì đây là một tính năng tiêu chuẩn của định dạng từ trước Windows 3. Tôi rất ngạc nhiên nếu gzip không thể làm điều đó. WinZip chắc chắn có thể.
Rob Kennedy
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.