Giữ 2 hệ thống tập tin được đồng bộ hóa mà không cần kết nối mạng


1

Tình huống: 2 máy tính, mỗi máy tính có một phần lớn với dữ liệu trên đó (HĐH và các chương trình nằm trong các phần khác trên máy tính và có thể bỏ qua). Dữ liệu phải giống nhau trên cả hai máy tính, vì vậy khi các bộ phận thay đổi trên một máy tính, sự thay đổi phải được nhân đôi bởi máy tính kia (trong khung thời gian hào phóng, giả sử một tuần). Không thể tạo kết nối mạng giữa 2 máy tính, nhưng tôi có thể gắn ổ đĩa ngoài.

Có công cụ nào để giữ cho 2 phần dữ liệu được đồng bộ hóa bằng ổ đĩa ngoài, trong đó ổ đĩa ngoài nhỏ hơn nhiều so với phần dữ liệu (ví dụ: ổ đĩa ngoài chỉ có 10% kích thước mà các phần dữ liệu có) Có thể giả định rằng các thay đổi thực tế dễ dàng phù hợp với ổ đĩa ngoài, thậm chí theo nghĩa là tất cả các tệp đã thay đổi (không chỉ các thay đổi) dễ dàng phù hợp với ổ đĩa ngoài.

Nếu nó làm cho mọi thứ dễ dàng hơn thì đồng bộ hóa chủ-nô sẽ là đủ, tức là chỉ một máy tính có thể thay đổi dữ liệu.

Tôi có thể tưởng tượng một cách tiếp cận trong đó ổ đĩa chuyển lưu trữ DB dấu thời gian / tổng kiểm tra của các tệp dữ liệu và chỉ lưu trữ các tệp đó trên ổ đĩa ngoài thực sự thay đổi và cần được cập nhật trên máy tính khác; nhưng tôi không biết về một công cụ thoát hiểm sẽ làm điều này hoặc giải quyết vấn đề bằng một cách tiếp cận khác.

[Chỉnh sửa] Lưu ý rằng các máy tính không ở cùng một vị trí, nhưng cách nhau vài km.

Câu trả lời:


1

Nếu các tệp dựa trên văn bản, bạn có thể sử dụng hệ thống kiểm soát phiên bản để quản lý các thay đổi. Chỉ cần tạo một bản vá các thay đổi kể từ lần đăng ký cuối cùng và di chuyển nó đến hệ thống đích.

Điều này dễ dàng hơn với một thiết lập chủ / nô lệ. Nếu thay đổi xảy ra trên cả hai hệ thống, bạn sẽ cần phải có kho kiểm soát phiên bản ở cả hai bên và vá cả hai hướng. Ừ!


Các tập tin chủ yếu là nhị phân, nhưng điều này vẫn có thể hoạt động. Tuy nhiên, dữ liệu cũng quá lớn để có hai lần trên bất kỳ hệ thống nào, mà tôi nghĩ rằng tôi cần sử dụng hệ thống kiểm soát phiên bản?
user12889

git có thể làm khác biệt nhị phân, nhưng bạn vẫn cần phải có thêm một bản sao của mọi thứ trong repo. một cách giải quyết có thể là giữ repo trên ổ đĩa ngoài (không may sử dụng nhiều dung lượng hơn bạn đã chỉ định) và ánh xạ nó dưới dạng .git trong kho lưu trữ dữ liệu. Theo "map" Tôi có nghĩa là liên kết tượng trưng trong linux hoặc "ánh xạ ổ đĩa mạng vào một thư mục" trong Windows. Nhưng có một số phức tạp phức tạp với điều này, như thực tế là các phần dữ liệu sẽ không nhớ bản sửa đổi nào. Tôi nghĩ rằng bạn phải tạo một nhánh cho mỗi và tự chuyển đổi repo giữa chúng bằng cách sửa đổi .git / HEAD.
intuited

1

Tôi đã từng phải làm điều này cho các hệ thống trên các mạng không kết nối khác nhau. Giải pháp tôi đã sử dụng là tạo một tệp chỉ mục chứa tên tệp và hàm băm MD5 của mỗi tệp trên hệ thống đích và máy chủ. Sau đó, tôi sao chép tệp băm đích vào máy chủ và tạo một danh sách khác biệt. Sau đó, tôi nén các tệp đã thay đổi và chuyển chúng vào hệ thống đích.


Bạn đã làm điều này bằng tay hoặc có một công cụ làm điều này?
user12889

Tôi đã viết một giao diện web dựa trên perl (công việc của tôi tại thời điểm đó). Thật không may, tôi không sở hữu mã hoặc có quyền truy cập vào nguồn nữa. Vì vậy, tôi không thể cung cấp các ví dụ.
Chris Nava

0

Đây có phải là tình huống có thể được giải quyết bằng DAS hoặc thiết bị lưu trữ chia sẻ tương tự không?


Không, các máy tính cách nhau vài km.
user12889

Ah, cảm ơn đã làm rõ.
phoebus
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.