Có một trình lưu trữ tệp song song (như tar) không?


40

Có cái gì đó ngoài kia để lưu trữ song song các tập tin?

Tar rất tuyệt, nhưng tôi không sử dụng tài liệu lưu trữ băng và điều quan trọng hơn với tôi là việc lưu trữ diễn ra nhanh chóng (với nén như bzip2) kể từ khi tôi có smp.


7
tar là cho nhiều hơn chỉ là băng. Tên ban đầu được lấy từ băng, nhưng ngày nay tôi thấy nó được sử dụng chủ yếu khi bạn muốn đặt mọi thứ vào một tệp để phân phối lại trong khi duy trì thông tin cấu trúc thư mục với nén tùy chọn.
Kevin M

có khá nhiều công cụ nén song song được điểm chuẩn ở đây vbtechsupport.com/1614 tuy nhiên vẫn chưa tìm thấy phiên bản song song của tar
p4guru

Không có câu trả lời nào được cung cấp (bao gồm cả thư mục được chấp nhận) xử lý các thư mục , theo như tôi có thể nói - chúng xử lý các tệp . Tôi chỉ thấy zipcó thể xử lý các thư mục: |
warren

1
Trên thực tế, những gì chúng ta thường làm là gói thư mục trong tartài liệu lưu trữ, và sau đó nén các gói sử dụng một máy nén file (như gzip, pigz, vv). Bạn có thể làm điều đó theo hai bước, nhưng cũng chỉ trong một bước , vì chúng có thể hoạt động trên các luồng dữ liệu từ đầu vào / đầu ra tiêu chuẩn. Kết quả rất giống với zip, nhưng linh hoạt hơn.
gerlos

Câu trả lời:


36

Tôi nghĩ rằng bạn đang tìm kiếm pbzip2:

PBZIP2 là một triển khai song song của trình nén tệp sắp xếp khối bzip2, sử dụng pthread và đạt được tốc độ gần tuyến tính trên các máy SMP.

Hãy xem trang chủ của dự án hoặc kiểm tra kho lưu trữ gói yêu thích của bạn.


1
Bạn cũng có thể thử pigzpxzthực hiện song song gzipxz. Bạn có thể nén bằng lệnh like tar c dir | pigz -c > dir.tar.gzvà giải nén bằng cách sử dụng pigz -cd dir.tar.gz | tar xf -.
gerlos

3
Các lệnh ngày hôm nay sẽ được tar -cf dir.tar.gz -I pigz dirtar -xf dir.tar.gz -I pigz. Cũng xzđược phân luồng: sử dụng XZ_OPT=-T0 tar -cJf dir.tar.gz dirXZ_OPT=-T0 tar -xJf dir.tar.gz.
Giàu

21

7zip có thể chạy trên nhiều luồng khi được cấp -mmtcờ, nhưng chỉ khi nén vào 7z-archives, cung cấp khả năng nén tuyệt vời nhưng thường chậm hơn zip để tạo lưu trữ. Làm một cái gì đó như thế này:

7z a -mmt foo.7z /opt/myhugefile.dat

7z là một trình lưu trữ tốt, với sự hỗ trợ tốt để kiểm soát sự cân bằng giữa tỷ lệ nén và thời gian tính toán / phân tách, truy cập ngẫu nhiên so với nén tốt hơn và những thứ tương tự. Tuy nhiên, nó không lưu trữ gần như nhiều siêu dữ liệu như tar, bạn mất quyền sở hữu / quyền.
Peter Cordes

Dường như các tùy chọn này được bật theo mặc định - ít nhất là tôi không tăng hiệu năng với nó và đầu ra của 7z có dòng về số lượng lõi CPU của tôi trong cả hai trường hợp.
Andrey Starodubtsev

14

OP hỏi về lưu trữ song song, không nén song song.

Nếu tài liệu nguồn đến từ một hệ thống tệp trong đó các thư mục / tệp khác nhau có thể nằm trên các đĩa khác nhau hoặc thậm chí là một đĩa nhanh vượt quá tốc độ đầu vào của (các) công cụ nén, thì thực sự có thể có nhiều luồng đầu vào đi vào các lớp nén.

Câu hỏi có ý nghĩa trở thành, đầu ra từ một kho lưu trữ song song trông như thế nào? Nó không còn chỉ là một mô tả tệp duy nhất / stdout, mà là một mô tả tệp cho mỗi luồng.

Một ví dụ về điều này cho đến nay là chế độ kết xuất song song của Postgresql pg_dump, trong đó nó chuyển sang một thư mục, với các luồng làm việc trên tập hợp các bảng để sao lưu (hàng đợi làm việc với nhiều luồng tiêu thụ hàng đợi).

Tôi không chắc chắn về bất kỳ trình lưu trữ song song thực tế nào là chủ đạo. Có một bản hack cho Solaris Tar để sử dụng trên ZFS: http://www.maier-komor.de/mtwrite.html

Có một số công cụ sao lưu chuyên dụng chạy thành công nhiều luồng, nhưng nhiều công cụ khác chỉ phân chia khối lượng công việc theo thư mục ở mức cao.


11
tar --use-compress-program=pigz  ....

thay thế pigzbằng chương trình nén song song yêu thích của bạn. Lý do để sử dụng tarlà vì nó có thể lưu trữ chủ sở hữu, nhóm, quyền. Siêu dữ liệu đó thường hữu ích (ví dụ: khôi phục cây dir trong một hệ thống phức tạp).


4
tar -c --use-nén-chương trình = pigz -f myDirectory.tar.gz myDirectory /
markusN

1
Tất cả các tùy chọn, AFAIK, cho tar có thể được sử dụng bình thường cùng với -Itùy chọn, giống như --use-compress-program. Vì vậy, ví dụ tar cvzf /some/dir/yournewarchive.tar.gz /directory/tobecompressed --exclude="/directo...."có thể được áp dụng cho tùy chọn đa luồng bằng cách sử dụng pigznhư tar -I pigz -cvf /some/dir/yournewarchive.tar.gz /directory/tobecompressed --exclude="/directo...". Đây là câu trả lời tốt nhất, phù hợp nhất, IMHO. Cảm ơn @uDude! :)
ILMostro_7

10

pigz là một triển khai song song của gzip, nhưng chỉ thực sự có thể sử dụng nhiều bộ xử lý để nén chứ không phải giải nén.


2
Đã làm một số thí nghiệm, và pigzthực sự có vẻ để có thể sử dụng nhiều chủ đề cũng khi giải nén. Hãy thử so sánh đầu ra time tar xf dir.tar.gzvà của time pigz -cd dir.tar.gz | tar xf -(trên CPU 4 lõi của tôi, nó chỉ mất ít hơn một nửa thời gian).
gerlos

4
@gerlos Sử dụng timetrên một đường ống sẽ chỉ có thời gian lệnh đầu tiên. Từ pigztài liệu : "Giải nén không thể song song, ít nhất là không có các luồng khử băng được chuẩn bị đặc biệt cho mục đích đó. Do đó, pigz sử dụng một luồng duy nhất (luồng chính) để giải nén, nhưng sẽ tạo ra ba luồng khác để đọc, viết và kiểm tra tính toán, có thể tăng tốc độ giải nén trong một số trường hợp. "
augurar

1
Ngoài ra còn có pixz .
Marc.2377

8

tarchỉ đơn giản là một định dạng lưu trữ rất tốt trong việc sao chép chính xác các tệp và bảo tồn cây thư mục và các thuộc tính tệp gốc. TAR rất tốt để tạo bản sao lưu, vì mọi thứ đều được bảo tồn. Tôi sử dụng pbzip2để nén các lưu trữ tar tôi sử dụng để sao lưu hệ thống với kết quả rất tốt.

Lệnh này nên thực hiện các mẹo.

tar -cpS "infile" | pbzip2 > "outfile"

pbzip2 có thể được thay thế bằng một tiện ích nén khác, nhưng được cảnh báo, nén LZMA (như pxz) sử dụng TON RAM khi nén / giải nén các tệp lớn (Tôi đã thử chạy 8 luồng với 8GB RAM và pxz bắt đầu hoán đổi sang đĩa).



1

Theo như nén được xem xét, xzvì khoảng phiên bản 5.2 hỗ trợ nén song song thông qua -Ttùy chọn.

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.