Đồng bộ hóa tập tin thời gian thực


22

Có công cụ nào có sẵn để đồng bộ hóa các tệp giữa hai hoặc nhiều máy chủ linux ngay sau khi ghi tệp vào đĩa không? Các rsynclệnh không phù hợp với tôi về vấn đề này, bởi vì nếu tôi đặt rsynctrong cron, thời gian tối thiểu tôi có thể thiết lập là 1 phút, nhưng tôi cần nó trên cơ sở thời gian thực.


2
Bạn có cần đồng bộ hóa từ một máy chủ đọc-ghi sang một hoặc nhiều máy chủ chỉ đọc hoặc bạn cần đồng bộ hóa hai chiều (với sự lan truyền theo cả hai hướng) hay n-way? Nếu bạn muốn hai / n-way, làm thế nào để bạn giải quyết xung đột?
Gilles 'SO- ngừng trở nên xấu xa'

Câu trả lời:


18

Gần đây tôi không sử dụng nó nhưng đọc về nó gần đây. Có một daemon được gọi lsyncd, mà tôi đoán là chính xác những gì bạn cần.

Đọc thêm về nó TẠI ĐÂY


2
IMHO, đây sẽ là câu trả lời được chấp nhận. lsyncdsử dụng inotify& nên nhanh nhất ở cấp độ fs. Thêm tại github.com/axkibe/lsyncd . Từ trang đó: Lsyncd xem giao diện giám sát sự kiện cây thư mục cục bộ (inotify hoặc fsevents). 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 mới hoặc thiết bị chặn và không cản trở hiệu suất của hệ thống tập tin cục bộ.
SACHIN GARG

5

Inotify-công cụ

Cung cấp giao diện cho inotify, bao gồm:

inotifywait

Lệnh này chỉ đơn giản là chặn các sự kiện inotify, làm cho nó phù hợp để sử dụng trong các kịch bản shell. Nó có thể xem bất kỳ tập hợp các tập tin và thư mục, và có thể xem đệ quy toàn bộ cây thư mục.

inotifywatch

Lệnh này thu thập số liệu thống kê sử dụng hệ thống tập tin và số lượng đầu ra của mỗi sự kiện inotify.


4

Đồng bộ hóa tệp thời gian thực giữa nhiều máy chủ ở chế độ đa chủ

Có một công cụ tốt được gọi lsyncdđể đồng bộ hóa các tệp giữa nhiều máy chủ trên cơ sở thời gian thực. Ở đây tôi đã thử với hai máy chủ.

Máy chủ: Server1 và Server2

Hệ điều hành được sử dụng: CentOS 7

Cài đặt các gói dưới đây trên cả hai máy chủ.

# yum install -y epel-release
# yum -y install lua lua-devel pkgconfig gcc asciidoc lsyncd

tạo ssh-key trong cả hai máy chủ và thêm vào authorized_keystập tin. [thêm khóa chung của server1 vào server2's authorized_keysvà khóa chung của server2 vào authorized_keystệp của server1 ]

Cấu hình máy chủ1

Mở /etc/lsyncd.confvà nhận xét cấu hình mặc định bằng cách sử dụng --ở đầu dòng và thêm cấu hình bên dưới vào tệp.

settings {
  logfile = "/var/log/lsyncd/lsyncd.log",
  delay = 1
}
sync {
  default.rsync,
  source="/home/test/public_html/",
  target="server2:/home/test/public_html/",
  rsync = {
    compress = true,
    acls = true,
    verbose = true,
    owner = true,
    group = true,
    perms = true,
    rsh = "/usr/bin/ssh -p 22 -o StrictHostKeyChecking=no"
  }
}

Thay đổi IP mục tiêu trong targettham số.

Bạn có thể thay đổi delaytham số theo yêu cầu của bạn. Ở đây nó được đặt 1 giây.

Bây giờ tạo thư mục đăng nhập.

# mkdir -p /var/log/lsyncd

Cho phép lsyncddịch vụ bắt đầu tự động.

# systemctl enable lsyncd.service

Bắt đầu dịch vụ.

# systemctl start lsyncd.service

Cấu hình máy chủ2

Thực hiện theo cấu hình tương tự như Server1 và thay đổi targetIP.

Bây giờ đồng bộ hóa được đặt.

Bạn có thể kiểm tra hoạt động từ tailf /var/log/lsyncd/lsyncd.log

Cảm ơn MelBurslan cho gợi ý của mình.


Tham số độ trễ dưới chức năng cài đặt không hợp lệ. Sử dụng biến maxDelays thay thế. Tôi đã thực hiện công cụ này. Nó thực sự mạnh mẽ.
Hasanuzzaman Sattar

3

Syncthing có thể là một tùy chọn. Nó cực kỳ nhanh, chuyển được mã hóa và có khách hàng cho nhiều nền tảng. Nó sử dụng "inotify" để đồng bộ hóa các tệp đã thay đổi ngay lập tức.


2

Bạn sẽ cần tiếp cận vấn đề này với giải pháp loại hệ thống tập tin - một sự đồng bộ đơn giản giữa hai máy sẽ không cung cấp cho bạn phản hồi theo thời gian thực.


Trên thực tế những máy chủ đó đang ở AWS. Vì vậy, chúng ta không thể có được một môi trường cụm! Có cách nào khác không?
Sourav

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.