Có một công cụ móc vào hai thư mục và đồng bộ hóa chúng ngay khi có gì đó thay đổi không?


7

Tôi có các thư mục mô phỏng rất lớn trên hai máy servervà trên clusterđó tôi muốn giữ đồng bộ hóa. Tình huống cơ bản là các tệp hiếm khi thay đổi nhưng khi thực hiện mô phỏng, nhiều tệp lớn thay đổi cùng một lúc mà tôi muốn đồng bộ hóa ngay khi chúng được đóng.

Do đó, tôi cho rằng một cronjob sử dụng rsync không lý tưởng, cronjob vì nó gọi rsync theo một khoảng thời gian cố định mà tôi có thể chọn quá lớn hoặc nhỏ, rsync vì không cần phải kiểm tra sửa đổi các tệp kể từ khi tôi và công việc mô phỏng là những người duy nhất truy cập chúng.

Vì vậy, ý tưởng của tôi sẽ sử dụng inotify (xem câu hỏi này ) để phát hiện các thay đổi trong thư mục mô phỏng trong một vòng lặp và sau đó rẽ vào một rsync cho các tệp đã thay đổi. Tuy nhiên tôi không chắc liệu điều đó có thể vô tình bỏ qua các tệp đã đóng chỉ khi thực hiện quá trình rẽ nhánh hay không. (và có thể tôi cũng muốn kết thúc trong một vòng lặp vô hạn do inotify gọi rsync để đồng bộ hóa các tập tin chỉ đồng bộ một lần nữa ...) Vì vậy, trước khi tôi cố gắng quá nhiều ở đó, tôi lặp lại câu hỏi của tôi:

Có một công cụ móc vào hai thư mục và đồng bộ hóa chúng ngay khi có gì đó thay đổi không?

(về cơ bản, đây sẽ là một cái gì đó giống như một hộp thư ngoại tuyến, tôi đoán vậy)

Câu trả lời:


6

Kiểm tra lsyncd .

Lsyncd xem một giao diện giám sát sự kiện cây thư mục cục bộ (inotify). Nó tổng hợp và kết hợp các sự kiện trong vài giây và sau đó sinh ra một (hoặc nhiều) quá trình để đồng bộ hóa các thay đổi. Theo mặc định, đây là rsync. Do đó, Lsyncd là một giải pháp nhân bản trực tiếp có trọng lượng nhẹ, tương đối dễ cài đặt, không yêu cầu hệ thống tập tin hoặc blockdevices mới và không cản trở hiệu suất của hệ thống tập tin cục bộ.

Đó không phải là hai chiều, nhưng từ câu hỏi của bạn, tôi hiểu rằng bạn cũng không cần điều đó. Nếu bạn cần đồng bộ hóa hai chiều, Unison là câu trả lời tốt, ngoại trừ không có hỗ trợ inotify. Ngoài ra, hãy kiểm tra câu hỏi này .

Điều thứ ba cho đồng bộ hóa hai chiều là DRBD , hệ thống đồng bộ hóa thời gian thực cấp khối, được bao gồm trong kernel dòng chính. Thật không may, vì nó gần như đồng bộ, nó đòi hỏi kết nối internet nhanh.


+1 lsyncd nghe có vẻ hay, tôi sẽ phải đầu tư một chút thời gian để biên dịch / cài đặt nó mà không có quyền root và cài đặt lua tuy nhiên :(
Tobias Kienzler

Có vẻ như Unison không còn được phát triển tích cực. cis.upenn.edu/~bcpierce/unison/status.html
buồn ngủ
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.