2008-10-24 11 views
10

Tôi có rất nhiều dữ liệu để đồng bộ hóa trên 4 hoặc 5 trang web trên khắp thế giới, khoảng một nửa terabyte tại mỗi trang web. Điều này thay đổi (thêm hoặc thay đổi) khoảng 1,4 Gigabyte mỗi ngày và dữ liệu có thể thay đổi tại bất kỳ vị trí nào trong số bốn trang web.Cách tốt nhất để đồng bộ hóa lượng lớn dữ liệu trên toàn thế giới là gì?

Một tỷ lệ phần trăm lớn (30%) dữ liệu là các gói trùng lặp (Có lẽ các gói JDK đóng gói), vì vậy giải pháp sẽ phải bao gồm cách chọn thực tế có những thứ nằm trên máy cục bộ và lấy chúng thay vì tải xuống từ một trang web khác.

Việc kiểm soát phiên bản không phải là một vấn đề, đây không phải là một mã số cá nhân.

Tôi chỉ quan tâm nếu có bất kỳ giải pháp nào ngoài đó (tốt nhất là nguồn mở) gần với điều như vậy?

Tập lệnh con của tôi bằng rsync không cắt mù tạt nữa, tôi muốn thực hiện đồng bộ hóa thông minh phức tạp hơn.

Cảm ơn

Chỉnh sửa: Điều này nên được dựa trên UNIX :)

Trả lời

12

Bạn đã thử Unison chưa?

Tôi đã có kết quả tốt với nó. Về cơ bản nó là một rsync thông minh hơn, có thể là những gì bạn muốn. Có một danh sách so sánh các công cụ đồng bộ hóa tệp here.

+0

Đây là * gần như * đúng và tôi đặc biệt thích liên kết tới trang web. Với Unison, nó không nhìn vào hệ thống tập tin cục bộ cho giải pháp đầu tiên, nói trong thư mục cha hoặc một thư mục chị em (tôi thậm chí muốn xác định điều này). Nếu kích thước, tên, thời gian mod, tổng kiểm tra giống nhau, hãy lấy nó ... – Spedge

+0

Tại sao bạn không sử dụng liên kết thay thế cho điều này, thay vì sao chép các JDK này và không có gì? Dường như không phải lo lắng về việc sao chép những thứ mà chắc chắn không cần sao chép. Unison SILL đồng bộ các liên kết ... do đó sẽ làm việc, và làm giảm bạn của một số nhu cầu không gian và một số nhức đầu –

1

Bạn có rất nhiều lựa chọn:

  • Bạn có thể thử thiết lập nhân rộng DB để lưu trữ dữ liệu.
  • Sử dụng kết hợp của rsync hoặc lftp và tập lệnh tùy chỉnh, nhưng không phù hợp với bạn.
  • Sử dụng git Repos với nén tối đa và đồng bộ hóa giữa chúng sử dụng một số kịch bản
  • Kể từ khi số lượng dữ liệu là khá lớn, và có lẽ quan trọng, làm một trong hai số phát triển tùy chỉnh trên thuê một chuyên gia;)
5

Nghe giống như một công việc cho BitTorrent.

Đối với mỗi tệp mới tại mỗi trang, tạo tệp hạt giống bittorrent và đặt nó vào thư mục có thể truy cập web tập trung.

Mỗi trang web sau đó tải xuống (qua bittorrent) tất cả các tệp. Điều này sẽ giúp bạn chia sẻ băng thông và tái sử dụng bản sao cục bộ tự động.

Công thức thực tế sẽ tùy thuộc vào nhu cầu của bạn. Ví dụ: Ví dụ, bạn có thể tạo 1 hạt giống bittorrent cho mỗi tệp trên mỗi máy chủ và đặt thời gian sửa đổi của tệp hạt giống giống như thời gian sửa đổi của tệp. Vì bạn sẽ làm nó hàng ngày (hàng giờ?) Tốt hơn nên sử dụng một cái gì đó như "làm" để (lại) tạo tệp hạt giống chỉ cho các tệp mới hoặc được cập nhật.

Sau đó, bạn sao chép tất cả các tệp hạt giống từ tất cả máy chủ đến vị trí tập trung ("dir theo dõi") với tùy chọn "ghi đè chỉ khi mới hơn". Điều này giúp bạn có được một bộ hạt giống torrent cho tất cả các bản sao mới nhất của tất cả các tệp.

Sau đó, mỗi máy chủ tải xuống tất cả các tệp hạt giống (một lần nữa, với "ghi đè lên nếu cài đặt mới hơn") và bắt đầu tải xuống bittorrent trên tất cả các tệp đó. Thao tác này sẽ tải xuống/tải xuống lại tất cả các tệp mới/cập nhật.

Rince và lặp lại, hàng ngày.

BTW, sẽ không có "tự tải xuống", như bạn đã nói trong nhận xét. Nếu tệp đã xuất hiện trên máy chủ lưu trữ cục bộ, kiểm tra của nó sẽ được xác minh và sẽ không xảy ra quá trình tải xuống.

+0

Tôi thích ý tưởng này. Torrenting chắc chắn sẽ giải quyết các vấn đề về băng thông và tải xuống mọi thứ từ chính nó sẽ là thiên tài. Tuy nhiên, một câu hỏi bổ sung cho điều này sẽ là làm cách nào để tôi tìm ra những gì tôi cần đồng bộ hóa cùng một lúc? Tôi cần phải xây dựng một danh sách về những thay đổi ... không chắc chắn nếu tôi có thể làm điều đó: S – Spedge

+0

Cách tôi nhìn thấy nó, bạn có thể nghĩ về các hoạt động sao chép/di chuyển thông thường, thay thế bittorrent thay cho tệp thực chuyển khoản. Tôi sẽ chỉnh sửa giải pháp của mình để phản ánh điều này. – ADEpt

2

Làm thế nào về một cái gì đó dọc theo dòng của Global Filesystem Red Hat, vì vậy mà toàn bộ cấu trúc được chia trên mỗi trang web vào nhiều thiết bị, thay vì phải tất cả nhân rộng tại mỗi địa điểm?

Hoặc có thể là hệ thống lưu trữ mạng thương mại như từ LeftHand Networks (tuyên bố từ chối trách nhiệm - Tôi không có ý tưởng về chi phí và chưa sử dụng chúng).

0

Bạn đã thử bản vá detect-renamed cho rsync (http://samba.anu.edu.au/ftp/rsync/dev/patches/detect-renamed.diff) chưa? Tôi đã không thử nó bản thân mình, nhưng tôi tự hỏi liệu nó sẽ phát hiện không chỉ đổi tên nhưng cũng trùng lặp tập tin. Nếu nó sẽ không phát hiện các tập tin trùng lặp, sau đó, tôi đoán, nó có thể có thể sửa đổi các bản vá để làm như vậy.

1

Kiểm tra siêu linh hoạt .... nó khá thú vị, chưa sử dụng trong môi trường có quy mô lớn, nhưng trên hệ thống 3 nút có vẻ hoạt động hoàn hảo.