Phương pháp nén nhanh nhất cho một số lượng lớn các tập tin là gì?


14

Tôi cần nén một thư mục với khoảng 350.000 tệp khá nhỏ với tổng số khoảng 100 GB. Tôi đang sử dụng OSX và hiện đang sử dụng công cụ "Nén" tiêu chuẩn để chuyển đổi thư mục này thành tệp .zip. Có cách nào nhanh hơn để làm điều này?


Bạn có thể không thể đánh bại tar, vì nó không thực sự nén, chỉ lưu trữ, mà không có tùy chọn cụ thể cho phép điều đó. Trong câu trả lời, tôi rất muốn xem bằng chứng, không có ý kiến ​​...
Daniel Beck

1
Phụ thuộc vào mức độ nén mà bạn muốn.
ta.speot.is

1
Cuối cùng tôi đã sử dụng tar và vì lý do tốc độ chưa thử nén nó. Nó đã có thể hoàn thành đúng lúc cho những gì tôi cần. Cảm ơn!
Spike

@DanielBeck, Vấn đề với tar là họ không hiển thị cây thư mục. Vì vậy, để thậm chí có được một "lượt xem", chúng ta cần giải nén toàn bộ tar đó. Có những lựa chọn thay thế cho tar hiển thị xem thư mục?
Pacerier

Câu trả lời:


15

Đối với các thư mục tôi sẽ sử dụng một tarđường ống bzip2với nén tối đa.

một cách đơn giản để đi là

tar cfj archive.tar.bz2 dir-to-be-archive / 

Điều này hoạt động rất tốt nếu bạn không có ý định tìm nạp các tập tin nhỏ ra khỏi kho lưu trữ
và chỉ dự định trích xuất toàn bộ mọi thứ bất cứ khi nào / bất cứ nơi nào cần thiết.
Tuy nhiên, nếu bạn làm muốn có được một tập nhỏ các tập tin ra, nó không phải là quá xấu.

Tôi thích gọi các tài liệu lưu trữ như vậy filename.tar.bz2và trích xuất với xfjtùy chọn ''.

Ống nén tối đa trông như thế này,

tar cf - dir-to-be-archive / | bzip2 -9 -> archive.tar.bz2  
# ^ tarball ống từ đây để zip-in ^ vào tệp lưu trữ. 

Lưu ý: bzip2phương pháp '' và nén nhiều hơn có xu hướng chậm hơn so với thông thường gziptừ ' tar cfz'.

Nếu bạn có một mạng nhanh và kho lưu trữ sẽ được đặt trên một máy khác,
bạn có thể tăng tốc với một đường ống trên mạng (sử dụng hiệu quả hai máy với nhau).

tar cf - dir / | người dùng ssh @ server "bzip2 -9 -> /target-path/archive.tar.bz2"  
# ^ tarball ống qua mạng để nén ^ và lưu trữ trên máy từ xa.

Một số tài liệu tham khảo,

  1. Tạp chí Linux: Công cụ nén được so sánh , ngày 28 tháng 7 năm 2005
    • điều này cũng đề cập đến trang web MaximumCompression được đề cập bởiDennis
  2. gzip so với bzip2 , ngày 26 tháng 8 năm 2003
  3. Điểm chuẩn nhanh: Gzip so với Bzip2 so với LZMA , ngày 31 tháng 5 năm 2005

2
Người hỏi đã hỏi phương pháp nhanh nhất, việc băm một tar 100Gb sẽ mất cả đời! Có một điểm với không gian đĩa quá rẻ đến nỗi việc lấy các aeon để vắt kiệt mọi thứ dư thừa cuối cùng có thể chỉ là một sự lãng phí tài nguyên vô nghĩa, trừ khi thực sự cần thiết. Với hầu hết việc sử dụng đĩa được sử dụng trong không gian chùng, gz tar với -1 có thể sẽ thực hiện công việc đủ tốt và cho phép chuyển sang nhiệm vụ tiếp theo vài tháng trước đó!
Andy Lee Robinson

Mặc dù tôi đồng ý rằng một tệp 100 GB có thể không đáng để nén toàn bộ, tôi không nghĩ rằng bzip2 sẽ mất nhiều thời gian tuyến tính hơn cho 100 GB so với 1 GB (giả sử). Rất thích xem một số lý thuyết hoặc dữ liệu để hiển thị một trong hai cách.
nik

Tôi hiểu rằng từ điển của bzip2 là thích ứng, do đó nó liên tục tìm kiếm các dự phòng mới trong cửa sổ tìm kiếm của nó cho đến cuối tệp. Tùy thuộc vào tính đồng nhất của entropy của tệp, nó phải tương đối tuyến tính. Nó sẽ là một máy nén tồi cho rằng nó có tất cả những gì nó cần từ đầu tập tin để có thể nén phần còn lại một cách nhanh chóng, nhưng trong một số trường hợp có thể là tất cả những gì cần thiết, mặc dù có những cách tốt hơn để già đi hơn là làm việc theo kinh nghiệm với bộ dữ liệu 100GB!
Andy Lee Robinson

7

Anh chàng này đã làm một số nghiên cứu về điều đó. Dường như .zip sẽ nén các tệp lớn hơn nhanh hơn. Tuy nhiên, nó mang lại một trong những kích thước nén lớn nhất. Có vẻ như anh ta đang sử dụng các tiện ích Windows, nhưng tôi cá là tiện ích của OSX gần như được tối ưu hóa.

Đây là một trang web tuyệt vời nơi nhiều tiện ích nén đã được điểm chuẩn cho tốc độ trên nhiều tệp. Có nhiều thử nghiệm khác trên trang web mà bạn có thể xem xét để xác định tiện ích tốt nhất cho bạn.

Phần lớn tốc độ phải làm với chương trình bạn sử dụng. Tôi đã sử dụng tiện ích 7zip cho Windows và tôi thấy rằng nó rất nhanh. Tuy nhiên, việc nén nhiều tệp mất nhiều thời gian không có vấn đề gì vì vậy tôi sẽ để nó qua đêm. Hoặc bạn chỉ có thể tar toàn bộ mọi thứ và không nén nó ... Cá nhân tôi ghét việc giải nén các tài liệu lưu trữ lớn vì vậy tôi sẽ cẩn thận nếu đó là những gì bạn muốn làm.


0

Tôi thích sử dụng

tar cf - dir-to-be-archived/ | bzip2 -9 - > archive.tar.bz2

để di chuyển tệp đến máy chủ khác và chuyển đổi chúng cùng một lúc


1
Điều này đã được đề xuất trong câu trả lời hàng đầu của @nik. Không cần lặp lại để nhấn mạnh, chỉ cần đưa ra câu trả lời khác hoặc thêm nhận xét nếu bạn có điều gì đó thực sự nhưng không muốn đưa ra câu trả lời liên quan. ; o)
pbhj
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.