Cách nhanh nhất kết hợp nhiều tệp thành một (tar czf quá chậm)


23

Hiện tại tôi đang chạy tar czfđể kết hợp các tập tin sao lưu. Các tập tin nằm trong một thư mục cụ thể.

Nhưng số lượng tập tin đang tăng lên. Sử dụng tzr czfmất quá nhiều thời gian (hơn 20 phút và đếm).

Tôi cần kết hợp các tệp nhanh hơn và theo cách có thể mở rộng.

Tôi đã tìm thấy genisoimage, readommkisofs. Nhưng tôi không biết cái nào là nhanh nhất và những hạn chế của mỗi thứ đó.


Tôi nghi ngờ rằng targiới thiệu bất kỳ chi phí đáng kể, đọc các tập tin là hoạt động đắt tiền ở đây. Bạn nên sửa đổi cách các tệp của bạn được lưu trữ hoặc sử dụng một cách tiếp cận hoàn toàn khác (sao chép toàn bộ hệ thống tệp). Chúng tôi không thể giúp bạn nhiều mà không biết các tệp của bạn được sắp xếp như thế nào.
Gilles 'SO- ngừng trở nên xấu xa'

5
Gắn kết FS của bạn với tùy chọn "noatime", có thể tăng tốc các hoạt động IO.
Rufo El Magufo

2
+1 cho thời gian rảnh, nó thực sự tạo ra sự khác biệt đáng kể. Đặc biệt là đối với các ổ đĩa cứng thông thường, và cũng chỉ để giảm ghi ngoại lai.
JM Becker

Câu trả lời:


25

Bạn nên kiểm tra xem phần lớn thời gian của bạn đang dành cho CPU hay trong I / O. Dù bằng cách nào, có nhiều cách để cải thiện nó:

A: không nén

Bạn đã không đề cập đến "nén" trong danh sách các yêu cầu của mình, vì vậy hãy thử bỏ "z" khỏi danh sách đối số của bạn : tar cf. Đây có thể là tăng tốc mọi thứ một chút.

Có các kỹ thuật khác để tăng tốc quá trình, như sử dụng "-N" để bỏ qua các tệp bạn đã sao lưu trước đó.

B: sao lưu toàn bộ phân vùng với dd

Ngoài ra, nếu bạn đang sao lưu toàn bộ phân vùng, hãy lấy một bản sao của toàn bộ hình ảnh đĩa. Điều này sẽ tiết kiệm xử lý và rất nhiều đầu đĩa tìm kiếm thời gian. tarvà bất kỳ chương trình nào khác hoạt động ở cấp cao hơn đều phải đọc và xử lý các mục nhập và inodes của thư mục để tìm vị trí của nội dung tệp và thực hiện nhiều tìm kiếm đĩa đầu hơn , đọc từng tệp từ một vị trí khác nhau từ đĩa.

Để sao lưu dữ liệu cơ bản nhanh hơn nhiều, hãy sử dụng:

dd bs=16M if=/dev/sda1 of=/another/filesystem

(Điều này giả định rằng bạn không sử dụng RAID, điều này có thể thay đổi mọi thứ một chút)


2
không nén : hoặc sử dụng pigznếu tồn tại trong hệ thống nhiều hơn một bộ xử lý.
Rufo El Magufo

LZ4 / zstd và các thuật toán nén nhanh tương tự có thể vẫn đáng để kiểm tra xem chúng có thể tăng tốc quá trình hay không bằng cách viết ít dữ liệu hơn (nếu dữ liệu có thể nén được) trong khi nén theo cấp độ nhanh hơn nhưng hiệu quả thấp hơn tùy thuộc vào cấp độ và thuật toán, man gzip cũng nói "Mức nén mặc định là -6", vì vậy có chỗ để cải thiện.
LiveWireBT

8

Để lặp lại những gì người khác đã nói: chúng ta cần biết thêm về các tệp đang được sao lưu. Tôi sẽ đi với một số giả định ở đây.

Nối vào tập tin tar

Nếu các tệp chỉ được thêm vào thư mục (nghĩa là không có tệp nào bị xóa), hãy đảm bảo rằng bạn đang nối thêm vào tệp tar hiện có thay vì tạo lại nó mỗi lần. Bạn có thể làm điều này bằng cách chỉ định tên tệp lưu trữ hiện có trong tarlệnh của bạn thay vì tên mới (hoặc xóa tên cũ).

Ghi vào một đĩa khác

Đọc từ cùng một đĩa bạn đang viết có thể sẽ giết chết hiệu suất. Hãy thử ghi vào một đĩa khác để trải tải I / O. Nếu tệp lưu trữ cần phải nằm trên cùng một đĩa với các tệp gốc, hãy di chuyển nó sau đó.

Đừng nén

Chỉ cần lặp lại những gì @Yves nói. Nếu các tệp sao lưu của bạn đã được nén, không cần phải nén lại nhiều nữa. Bạn sẽ chỉ lãng phí chu kỳ CPU.


4

Sử dụng tar với lz4 crompression như trong

tar cvf - myFolder | lz4 > myFolder.tar.lz4

cung cấp cho bạn tốt nhất của cả hai thế giới (tốc độ nén VÀ khá tốt). Yêu cầu tỷ lệ nén khoảng 3 ngay cả khi dữ liệu của bạn chứa tệp nhị phân.

Đọc thêm: so sánh các thuật toán nén Làm thế nào để tar với lz4


1
Những gì StefanQ đang ở là bạn cần chọn máy nén của mình tùy thuộc vào nơi tắc nghẽn của bạn. Ngoài ra: hãy nhớ rằng bạn có thể lưu đầu ra vào một thiết bị lưu trữ vật lý khác hoặc thậm chí là một máy từ xa!
Lester Cheung

2

Tôi ngạc nhiên khi không ai nhắc đến bãi rác và khôi phục. Nó sẽ nhanh hơn nhiều so với dd nếu bạn có không gian trống trong hệ thống tập tin.

Lưu ý rằng tùy thuộc vào hệ thống tệp được đề cập, bạn có thể cần các công cụ khác nhau:

  • ext2 / 3/4 - kết xuấtkhôi phục ( kết xuất gói trong RH / Debian)
  • XFS - xfsdumpxfsrestore (gói xfsdump trong RH / Debian)
  • ZFS - zfs gửizfs recv
  • BTRFS - btrfs gửibtrfs nhận

Lưu ý rằng một số chương trình không có nén tích hợp (tất cả ngoại trừ kết xuất) - đường ống đến thiết bị xuất chuẩn và sử dụng pigz khi cầ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.