Đối với các tệp lớn nén trước sau đó chuyển hoặc rsync -z? cái nào sẽ nhanh nhất


14

Tôi có rất nhiều tệp dữ liệu nhỏ tương đối nhưng chúng chiếm khoảng 50 GB và tôi cần chúng được chuyển sang một máy khác. Tôi đã cố gắng nghĩ ra cách hiệu quả nhất để làm điều này.

Suy nghĩ tôi đã phải gzip toàn bộ sau đó rsync nó và giải nén nó, dựa vào rsync -z để nén, gzip sau đó sử dụng rsync -z. Tôi không chắc cái nào sẽ hiệu quả nhất vì tôi không chắc chính xác rsync -z được triển khai như thế nào. Bất kỳ ý tưởng về lựa chọn nào sẽ là nhanh nhất?

Câu trả lời:


11

Bạn không thể "gzip toàn bộ" vì gzip chỉ nén một tệp, bạn có thể tạo một tệp tar và gzip nó thành "gzip toàn bộ" nhưng bạn sẽ mất khả năng rsync chỉ sao chép tệp đã sửa đổi.

Vì vậy, câu hỏi là: tốt hơn để lưu trữ tệp tôi cần rsync gziped hoặc dựa vào tùy chọn -z của rsync.
Câu trả lời có lẽ là bạn không muốn giải nén tập tin trên máy chủ của mình? Tôi đoán là có, vì vậy tôi không thấy cách bạn có thể quản lý tệp gzip trước khi thực hiện rsync.

Có thể bạn không cần khả năng rsync chỉ sao chép tệp đã sửa đổi? Trong trường hợp này tại sao sử dụng rsync thay vì thực hiện một tập tin tar.gz chứa nội dung của bạn?

Dù sao để trả lời câu hỏi, rsync gzip sẽ kém hiệu quả hơn một chút so với tệp gzip với gzip. Tại sao ? bởi vì rsync sẽ gzip dữ liệu theo từng đoạn, do đó, một tập hợp dữ liệu nhỏ hơn sẽ được sử dụng để tạo bảng mà gzip sử dụng để thực hiện nén, một tập hợp dữ liệu lớn hơn (gzip sẽ sử dụng toàn bộ tệp cùng một lúc) sẽ cho bảng nén tốt hơn. Nhưng sự khác biệt sẽ rất rất nhỏ trong hầu hết các trường hợp nhưng trong trường hợp rất hiếm, sự khác biệt có thể quan trọng hơn (nếu bạn có một tệp rất lớn với partern rất dài lặp lại nhiều lần trên tệp nhưng cách xa nhau) (Đây là một ví dụ rất đơn giản)


1
Từ cách tôi đọc câu hỏi của anh ấy, anh ấy sẽ nén để đưa nó qua dây và sau đó giải nén phía bên kia. Tôi muốn sử dụng tính năng nén riêng của rsync qua gzip, đơn giản vì việc nén và giải nén 50GB có thể mất một lượng thời gian đáng kể. Sau đó, một lần nữa, nếu các tệp chủ yếu là văn bản, chúng sẽ nén độc đáo. Tùy chọn thứ ba: sao chép các tập tin vào ổ đĩa USB.

3
@Randolph Potter: mất thời gian để nén 50GB cục bộ thì rsync sẽ cao hơn so với sử dụng rsync -z, dù sao nếu anh ta muốn tận dụng lợi thế của rsync (chỉ sao chép tệp đã thay đổi) thì không thể thực hiện nén trước
bán kính

điểm rất tốt. +1 cho bạn :-)

Nhớ lại rằng gzip là một máy nén dòng.
Falcon Momot

6

Nếu bạn chỉ sao chép dữ liệu một lần, rsync sẽ không phải là một chiến thắng lớn. Nếu bạn thích gzip, (hoặc tar + gzip, vì bạn có nhiều tệp), bạn có thể thử một cái gì đó như:

tar -cz /home/me/source/directory | ssh target tar -xz --directory /home/you/target/directory

Điều đó sẽ có được nén mà bạn đang tìm kiếm và chỉ cần sao chép trực tiếp mà không liên quan đến rsync.


tôi có lẽ muốn sử dụng --lzop cho rằng thay vì gzip ... nhanh hơn nhiều và chi phí thấp hơn và cpu vẫn có tỷ lệ nén tốt cho văn bản
underrun

5

@radius, một nit nhỏ để chọn về cách thức gziphoạt động - gziplà một thuật toán nén dựa trên khối và là một thuật toán khá đơn giản ở đó. Toàn bộ tệp không được xem xét cho bảng nén - chỉ mỗi khối. Các thuật toán khác có thể sử dụng toàn bộ nội dung của tệp và có một số thuật toán sử dụng nội dung của nhiều khối hoặc thậm chí các khối có kích thước thay đổi. Một ví dụ hấp dẫn là lrzip, bởi cùng một tác giả như rsync!

gzipThuật toán gầy .

Vì vậy, trong Tóm lại, sử dụng rsync -zkhả năng sẽ mang lại cùng một nén như gziping đầu tiên - và nếu bạn đang làm một chuyển khác biệt, tốt hơn vì rsync's thuật toán diffing.

Điều đó nói rằng, tôi nghĩ rằng người ta sẽ thấy rằng scpnhịp đập đều đặn rsynccho việc chuyển tiền không khác biệt - bởi vì nó sẽ có chi phí thấp hơn nhiều so với rsyncthuật toán (dù sao cũng sẽ sử dụng scpphương tiện ngầm!)

Nếu mạng của bạn không trở thành một nút cổ chai, sau đó bạn sẽ muốn sử dụng nén trên dây.

Nếu đĩa của bạn là nút cổ chai, thì đó là khi truyền phát vào tệp nén sẽ là tốt nhất. (ví dụ: netcattừ máy này sang máy khác, phát trực tiếp gzip -c)

Thông thường, nếu tốc độ là chính, việc nén một tệp hiện có trước đó là lãng phí.

TIMTOWTDI, YMMV, IANAL, v.v.


2

Theo anh chàng này, nó có thể nhanh hơn để sử dụng rsync -z, mặc dù tôi đoán nó sẽ gần như hiệu quả như nén từng tệp trước khi chuyển. Nó sẽ nhanh hơn nén luồng tar, như đề xuất của người khác.

Từ trang người đàn ông:

          Note  that  this  option  typically  achieves better compression
          ratios than can be achieved by using a compressing remote  shell
          or  a  compressing  transport  because it takes advantage of the
          implicit information in the matching data blocks  that  are  not
          explicitly sent over the connection.

1
Tôi sẽ đề nghị sử dụng --compress-level = 1 với rsync -z nếu bạn có mạng nhanh. Bạn muốn mạng là nút cổ chai của bạn, không phải CPU hoặc đĩa IO, để giảm thiểu tổng thời gian truyền. Nếu mạng chậm, sử dụng mặc định -z (tương đương với gzip -6 tôi nghĩ) vẫn có thể khiến mạng xử lý bị ràng buộc.
rmalayter

1

Vì cả scp của tệp nén và rsync sẽ có thời gian truyền rất giống nhau, nên "cách hiệu quả nhất để thực hiện việc này" sẽ là nén nhanh chóng thay vì nén, chuyển.

Ngoài "độ bền", các cân nhắc khác bao gồm:

rsync có thể dễ dàng khởi động lại nếu không phải tất cả các tệp được chuyển.

rsync có thể được sử dụng để duy trì các tập tin trên máy từ xa.

tar hoặc gzip cục bộ yêu cầu không gian cục bộ.

Cân nhắc sử dụng cổng cho cả máy đích và tường lửa: 1) scp sử dụng cổng 22 (theo mặc định) có thể không được chấp nhận. 2) cổng người dùng rsync 873 (theo mặc định)

Tôi không chắc tại sao bán kính mong đợi poster gốc KHÔNG muốn các tệp được giải nén được lưu trữ.

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.