Có tùy chọn nén -z với rsync tăng tốc sao lưu


37

Trong rsync, -zsẽ nén dữ liệu tập tin trong quá trình chuyển.

Nếu tôi hiểu chính xác, hãy -znén các tập tin trước khi chuyển và sau đó giải nén chúng sau khi chuyển. Có phải thời gian giảm trong quá trình chuyển do nén vượt quá thời gian để nén và giải nén?

Có phải câu trả lời cho câu hỏi phụ thuộc vào việc tôi sao lưu vào hdd bên ngoài thông qua usb (2.0 hoặc 3.0) hoặc đến máy chủ bằng ssh qua internet không?


Cũng cần nhớ nếu tệp nén không khác nhiều về kích thước so với tệp gốc, đây có thể là một chi phí rất lớn.
heemayl

1
Để giải thích những gì heemayl nói, nếu nội dung phần lớn là tài liệu đã ở định dạng nén (jpeg, mpeg, gói distro, v.v.) thì nén ít hiệu quả hơn nhiều. Tôi nhận thấy man rsyncrằng trên thực tế có một danh sách các hậu tố tập tin sẽ không được nén ngay cả với -z(xem --skip-compress).
goldilocks

Câu trả lời:


46

Đó là một câu hỏi chung. Việc nén và giải nén tại các điểm cuối có cải thiện băng thông hiệu quả của một liên kết không?

Băng thông hiệu quả (nhận thức) của một liên kết thực hiện nén và giải nén tại các điểm cuối là một chức năng của:

  1. bạn có thể nén nhanh như thế nào (tốc độ CPU của bạn)
  2. băng thông thực tế của mạng bạn

Hàm được mô tả với biểu đồ 3D này mà bạn có thể muốn tham khảo cho tình huống cụ thể của mình:

nhập mô tả hình ảnh ở đây

Biểu đồ bắt nguồn với bài viết Công cụ nén so với năm 2005 của http://www.linuxjournal.com/ .


1
Loại dữ liệu của bạn cũng là một yếu tố chính (yếu tố số 3 bị thiếu trong danh sách). Bài viết được liên kết sử dụng kết hợp dữ liệu điển hình. Bạn có thể không phải là điển hình. Nếu bạn đang đồng bộ hóa các tệp ZIP 100% (hoặc bất kỳ dữ liệu được nén trước nào), bạn có thể không muốn nén. Nếu bạn đang đồng bộ hóa các tệp văn bản 100%, bạn có thể nén nhanh hơn ngay cả khi mạng của bạn nhanh và CPU của bạn chậm. Cân cả 3 yếu tố.
Richard Brightwell

13

Nếu bạn có kết nối rất chậm (nghĩ là GPRS), bạn chắc chắn muốn nén dữ liệu của mình càng nhiều càng tốt, nếu không kết nối của bạn sẽ làm mọi thứ chậm lại.

Nếu bạn có CPU rất chậm và kết nối nhanh (như thiết bị mạng nhúng), bạn thường không muốn nén dữ liệu của mình, nếu không CPU của bạn sẽ làm mọi thứ chậm lại.


3

Phụ thuộc vào mức độ nén dữ liệu của bạn và khả năng xử lý của nguồn và đích của bạn. Một bản sao lưu toàn bộ đĩa theo kinh nghiệm của tôi sẽ nén khoảng 30-50% kích thước ban đầu của nó, vì vậy có thể đáng để cho nó một shot. Nếu không, đừng bận tâm với việc nén. Có thể đáng để kiểm tra tốc độ nén của bạn pigz -c <your file> | wc -cvà so sánh kích thước được trả về với kích thước ban đầu của bạn.


2

Có, tốc độ của kết nối xác định nếu tốc độ mọi thứ tăng lên. Nó sẽ chỉ là chi phí để sao lưu USB, vì không phải các đĩa làm phồng dữ liệu mà là quá trình ghi dữ liệu. Vì vậy, cùng một máy đọc và xì hơi nó, phải thổi phồng và viết nó quá. Tôi nghĩ rằng Rsync vẫn là hai quá trình nhưng bộ nhớ của bạn để truyền dữ liệu từ quy trình này sang quy trình khác là đủ nhanh và cpu cần nhiều thời gian hơn để nén nó (trong khi đọc nó vào cùng một bộ nhớ mà sau đó sẽ xử lý nó :).

Nén chỉ giúp khi bạn có người gửi và rsync người nhận và một số mạng chậm hơn ở giữa. 1Gbit có thể đã đủ nhanh khi bạn có một NAS cục bộ, 10Gbit đã là tốc độ SATA thô. Vì vậy, nén chỉ cần thiết khi bạn có kết nối 100Mbit trở xuống và nó chỉ có ý nghĩa khi dữ liệu được nén.

Tôi nghĩ rsync có thể nhận thấy rằng nó không chạy trên hai máy nhưng một và bỏ qua nén nhưng không chắc chắn.


1

tl; dr Trên các liên kết chuyển chậm, nén, nếu không thì không. Dưới đây là bài kiểm tra tốc độ nén, liên kết đến công cụ chuyển đổi băng thông và một số thông tin.

Sử dụng nén với rsyncsẽ chỉ tăng tốc mọi thứ nếu liên kết trung gian "đủ chậm", nghĩa là nếu máy ở một đầu có thể tạo ra luồng dữ liệu nén đủ nhanh để bão hòa liên kết truyền thông.

Vì vậy, liên kết chậm nhất mà tôi nên sử dụng nén để đạt được điều gì?

Sau đây là một thử nghiệm rất không khoa học, sẽ cho thấy tốc độ gzipcó thể tạo dữ liệu nhanh như thế nào và điều đó có nghĩa là liệu bạn có nên nén chuyển số lượng lớn mạng của mình nói chung hay không.

Dữ liệu đầu vào sẽ thay đổi kết quả của bài kiểm tra rất nhiều . Tôi đang sử dụng một tệp thông thường không nén (!) Trên máy tính của mình, có thể đại diện cho loại dữ liệu tôi thường truyền qua mạng. Việc sử dụng /dev/zero(tạo ra các số 0 không giới hạn) sẽ gây hiểu lầm vì một luồng các số 0 sẽ rất dễ nén và việc sử dụng /dev/randomsẽ gây hiểu lầm cho lý do ngược lại. Vì vậy, thay vào đó tôi sử dụng một tập tin tar của $HOME/localthư mục chứa phần mềm tôi đã cài đặt $HOME. Bản thân tệp không được nén, nhưng chứa hỗn hợp các tệp nhị phân, tệp nén nhỏ và tệp nguồn / văn bản và tôi sẽ nén nó với cài đặt mặc định cho gzipnó sẽ giảm 67% từ 64 MiB xuống 22 MiB.

$ gzip -c local.tar | dd of=/dev/null
43092+4 records in
43093+1 records out
22063854 bytes transferred in 2.819 secs (7825741 bytes/sec)

Tôi làm điều này một vài lần để có cảm giác về mức trung bình có thể là bao nhiêu và nó đạt khoảng 7800000 byte / s.

Sau đó, tôi sử dụng một máy tính băng thông mạng để xem cái này chuyển thành cái gì. Trong trường hợp cụ thể này, nó chỉ nằm dưới khả năng của liên kết có dây "Ethernet 100Mb", nhanh hơn so với đường lên internet "Tải xuống VDSL", nhanh hơn một chút so với liên kết không dây "802.11 [a / g]" và ở đâu đó ở giữa "Bluetooth v3.0" (chậm hơn) và "USB 2.0" (nhanh hơn).

Điều này có nghĩa là nếu tôi đang sử dụng nén trên bất kỳ thứ gì nhanh hơn thế, việc nén sẽ có thể làm chậm quá trình truyền tệp.

rsynccó thể không sử dụng chính xác các thư viện gzipđể thực hiện nén, nhưng ở trên sẽ cung cấp cho bạn một chút gợi ý.

rsyncnhư bạn biết, thực hiện nhiều hơn việc nén, và tốc độ tăng thực sự đến từ việc chỉ truyền [bit của] các tệp đã thay đổi.

Theo kinh nghiệm của riêng tôi, sử dụng nén với rsyncđã trở nên ngày càng ít có lợi hơn trong 10 năm qua hoặc lâu hơn, vì băng thông của các mạng đã tăng lên (nơi tôi đang ở).

Để thực hiện sao lưu gia tăng, tôi chắc chắn sẽ khuyên bạn nên điều tra --link-desttùy chọn (điều này không liên quan gì đến những gì được chuyển, chỉ với cách mọi thứ được lưu trữ tại mục tiêu). Ngoài ra, nếu bạn đang thực hiện trên SSH, đừng sử dụng nén nếu kết nối SSH của bạn đã được nén và chỉ nén các kết nối SSH (đường hầm, v.v.) qua các liên kết chậm, vì những lý do tương tự như trê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.