Nén tệp zip với độ nén cao hơn


10

Tôi có một số lượng lớn các tệp zip được nén bằng lệnh zip. Tôi muốn giải nén chúng bằng cờ -9 để cải thiện tỷ lệ nén. Có ai biết nếu điều đó có thể được thực hiện mà không cần giải nén bằng tay và sau đó nén.

Tái bút Tôi cần giữ chúng dưới dạng tệp zip vì chúng được phục vụ cho người dùng windows (và như vậy có các khoảng trắng trong tên của chúng)


nén lại chỉ có thể bằng cách giải nén tệp và nén lại. nó phụ thuộc vào thuật toán. Bạn cũng có thể thử bzip2 hoặc thậm chí tốt hơn xz.

Mẹo: điều này cũng có thể được thực hiện với các tệp Excel XLSX hoặc XLSM vì chúng thực sự là các tệp ZIP chứa XML và các nội dung khác.
Cristian Ciupitu

Câu trả lời:


10

Bạn không thể cải thiện tỷ lệ nén mà không giải nén dữ liệu. Bạn không phải giải nén tất cả các tệp zip trước khi nén chúng, nhưng tôi khuyên bạn nên giải nén toàn bộ một tệp zip trước khi nén lại.

Có thể giải nén các tệp trong một tệp zip một lần và thêm lại chúng trước khi chuyển đến tệp tiếp theo có trong tệp zip. Điều này yêu cầu N viết lại tệp zip cho tệp zip chứa N tệp. Sẽ hiệu quả hơn nhiều khi trích xuất các tệp N và tạo tệp zip mới trong một lần, nén tất cả các tệp với -9.


1
Mục tiêu của tôi không phải là để tránh giải nén, mà là giữ cho cấu trúc lưu trữ giống nhau. và không thay đổi bất kỳ siêu dữ liệu tập tin.
Smartelf

1
@Smartelf Tôi không nghĩ bạn có thể tránh giải nén. Các yêu cầu khác của bạn là có thể, không có lý do gì để dữ liệu phải thay đổi.
terdon

2
@ Tự thông báo như tôi đã chỉ ra, bạn ** phải ** giải nén. Việc chỉ định siêu dữ liệu cùng một tệp sẽ không thành vấn đề nếu bạn thực hiện việc này, ví dụ như với chương trình Python và mô-đun zip của nó. Với unzip/ zipgiữ siêu dữ liệu giống nhau có lẽ khó khăn hơn.
Anthon

6

Có một tiện ích gọi là AdvanceCOMP thực hiện chính xác những gì bạn đang tìm kiếm. Nó nén lại các tệp ZIP và GZ (và một số tệp khác) mà không cần trích xuất trung gian vào đĩa. (Tôi tin rằng cơ chế được sử dụng là giải nén dữ liệu và giải nén nó, nhưng điều đó không yêu cầu ghi tệp vào đĩa hoặc tái tạo siêu dữ liệu.)

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.