Đồng bộ hóa một thư mục giữa 2 máy tính, với trình theo dõi hệ thống tệp để mỗi lần sửa đổi tệp, nó sẽ được sao chép ngay lập tức


20

Tôi có:

  • một máy chủ Linux mà tôi kết nối qua SSH trên IP 203.0.113.0 cổng 1234

  • một máy tính gia đình (đằng sau bộ định tuyến), IP công cộng 198.51.100.17, là Debian hoặc Windows + Cygwin

Cái gì dễ nhất để có một thư mục được /home/inprogress/ đồng bộ hóa (theo cả hai hướng), hơi giống rsync, nhưng với trình theo dõi hệ thống tệp , để mỗi lần sửa đổi tệp, nó sẽ được sao chép ngay lập tức ở phía bên kia? (tức là không cần phải gọi chương trình đồng bộ theo cách thủ công)

Tôi đang tìm kiếm một giải pháp dòng lệnh / không có GUI, vì máy chủ không có đầu.

Có giải pháp tích hợp Linux / Debian không?


7
Bạn đang mô tả syncthing.
Kusalananda

lsync, nhưng tôi không biết nếu nó hoạt động hữu ích cho đồng bộ hai chiều.
Ulrich Schwarz

lsync, csync2, inotify + rsync, nhưng tôi thích sử dụng chúng trong cài đặt mạng cục bộ.
Rui F Ribeiro

2
Ở cấp độ hệ thống tập tin, âm thanh này giống như OCFS2 hoặc thậm chí RAID 1 trên NBD
roaima

3
Đồng bộ một chiều rất dễ dàng. Đồng bộ hai chiều ngụ ý giải quyết xung đột (vâng, nó sẽ xảy ra tại một số điểm), điều này có nghĩa là một số loại UI (mặc dù không cần thiết là GUI).
jcaron

Câu trả lời:


23

Theo nhận xét của @ Kusalananda, cuối cùng tôi đã dành vài giờ để thử nghiệm Syncthing cho trường hợp sử dụng này và nó hoạt động rất tốt. Nó tự động phát hiện các thay đổi ở cả hai phía và sao chép rất nhanh.

Ví dụ: hãy tưởng tượng bạn đang làm việc cục bộ trên server.pyphần mềm Notepad yêu thích của mình, bạn nhấn CTRL + S (Lưu). Một vài giây sau, nó tự động được sao chép trên máy chủ ở xa (không có bất kỳ hộp thoại bật lên nào).

Một điều tuyệt vời tôi nhận thấy là bạn không phải suy nghĩ về IP của máy tính và máy chủ gia đình với Syncthing: mỗi "thiết bị" (máy tính, máy chủ, điện thoại, v.v.) có một DeviceID duy nhất và nếu bạn chia sẻ ID với một thiết bị khác, nó sẽ tự động tìm ra cách chúng sẽ kết nối với nhau.

Làm:

  • Phía máy tính gia đình (Windows hoặc Linux):

    Sử dụng công cụ cấu hình Syncthing trong trình duyệt bình thường

  • Bên VPS:

    Đầu tiên kết nối VPS với chuyển tiếp cổng:

    ssh <user>@<VPS_IP> -L 8385:localhost:8384
    

    Tùy chọn thứ hai sẽ chuyển hướng công cụ cấu hình web Syncthing của VPS nghe trên cổng 8384 sang cổng 8385 của máy tính gia đình.

    Sau đó chạy nó trên VPS:

    wget https://github.com/syncthing/syncthing/releases/download/v0.14.52/syncthing-linux-amd64-v0.14.52.tar.gz 
    tar xvfz syncthing-linux-amd64-v0.14.52.tar.gz
    nohup syncthing-linux-amd64-v0.14.52/syncthing &
    

    Sau đó, trên trình duyệt của máy tính gia đình, hãy mở http: // localhost: 8385 : đây sẽ là cấu hình Syncthing của VPS!


Giải pháp khác tôi đã thử:

  • SSHFS sử dụng hướng dẫn này . Xin lưu ý rằng trong hướng dẫn này, họ không sử dụng sshfs-win mà thay vào đó là win-sshfs (đây là hai dự án khác nhau). Tôi đã thử cả hai và tôi không thể làm cho bất kỳ cái nào trong số chúng hoạt động (có thể là vấn đề với cấu hình VPS của tôi).

  • Đây cũng là một tài liệu tham khảo thú vị: /softwarerecs/13875/windows-sshfs-sftp-mounting-clents


Ưu điểm bổ sung của Syncthing tôi vừa nhận thấy:

  • bạn có thể giảm fsWatcherDelayStrong config.xmltừ 10để 2giây để sau khi làm tổ hợp phím CTRL + S, 2 giây sau (+ thời gian để tải lên, tức là ít hơn 1 giây cho một tập tin văn bản nhỏ) nó trên máy tính khác

  • nếu bạn đồng bộ hóa hai máy tính trong cùng một mạng cục bộ (chỉ cần cung cấp DeviceID cho nhau, không cần quan tâm đến địa chỉ IP cục bộ), nó sẽ tự động nhận thấy rằng nó không cần truyền qua internet, nhưng nó có thể giao dịch tại địa phương. Điều này thật tuyệt vời và cho phép đồng bộ hóa tốc độ rất nhanh (4 MB / s!) Của phone <--> computercả hai được kết nối với cùng một bộ định tuyến gia đình thông qua WiFi ... ... trong khi nó sẽ bị kẹt ở tốc độ 100 KB / giây trên ADSL với đồng bộ hóa Dropbox ! (ADSL của tôi bị giới hạn ở mức 100 KB / giây khi tải lên)


@sudodus Một người bạn đã giới thiệu nó cho tôi vài tuần trước và tôi đã thử nó cho máy tính <-> đồng bộ hóa điện thoại, nhưng tôi không tưởng tượng rằng nó cũng sẽ hoạt động tốt cho máy chủ phát triển! Chỉnh sửa mã của bạn, nhấn lưu, 1 2 3 trên máy tính khác!
Basj

1
+1. Tôi đã gặp vấn đề tương tự trong một thời gian dài, đã sử dụng rsync + một số tập lệnh trong nhiều năm và cuối cùng đã thử đồng bộ hóa, csync, unison và một vài thứ khác cách đây 2 tháng. Hoạt động tốt, với bất kỳ số lượng máy tính nào và ngay cả khi một số trong số chúng không có kết nối mạng vĩnh viễn. Có thể giới thiệu 100%.
Guntram Blohm hỗ trợ Monica

1
Thật tuyệt khi bạn đã thử nghiệm tất cả các giải pháp khác nhau @GuntramBlohm! Nếu bạn có vài phút để gửi câu trả lời để đưa ra phản hồi / so sánh giữa đồng bộ hóa, rsync, csync, unison, v.v ... những ưu / nhược điểm cho mỗi câu hỏi, sẽ rất thú vị để tham khảo trong tương lai!
Basj

16

Âm thanh như Unison nên làm công việc.

Unison là một công cụ đồng bộ hóa tệp cho OSX, Unix và Windows. Nó cho phép hai bản sao của một tập hợp các tệp và thư mục được lưu trữ trên các máy chủ khác nhau (hoặc các đĩa khác nhau trên cùng một máy chủ), được sửa đổi riêng lẻ, sau đó được cập nhật bằng cách truyền các thay đổi trong mỗi bản sao này sang bản sao khác.

Nó có một GUI tùy chọn có thể giúp giải quyết xung đột dễ dàng hơn một chút, nhưng mọi thứ cũng có thể được thực hiện bằng giao diện người dùng dựa trên văn bản. Bạn cũng có thể xác định trước cách giải quyết xung đột cho hoạt động hoàn toàn không giám sát.

Có thành phần xem tệp (fsmonitor) để kích hoạt đồng bộ bất cứ khi nào cần. Tìm kiếm "lặp lại xem" trong hướng dẫn để biết chi tiết.

Có vẻ như Debian có phiên bản phù hợp (2.48+) được đóng gói ngoài hộp .


Cảm ơn! Là fsmonitor của trình xem tập tin được bao gồm ngoài hộp với Unison hay chúng ta phải cài đặt công cụ này và kết nối nó với Unison bằng tay?
Basj

1
@Basj Nó được bao gồm trong các phiên bản đủ gần đây và nó thực sự tầm thường để thiết lập. Tôi đã thêm một liên kết đến hướng dẫn.
TooTea

Tôi đã sử dụng nó trong quá khứ trong một máy Mac cũ. Nó chỉ hoạt động với rắc rối tối thiểu. Không có ý tưởng nếu nó phù hợp cho các kịch bản máy chủ mặc dù.
Rui F Ribeiro
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.