Đồng bộ hóa thư mục cục bộ với một thư mục từ xa trong Linux


14

Tôi có một thư mục chứa một vài tệp trong đó và một số dung lượng trên máy chủ web. Tôi muốn thực hiện đồng bộ hai chiều giữa thư mục cục bộ và thư mục từ xa trong linux, chỉ trong thời gian sửa đổi. Làm thế nào để tôi làm điều này? btw Tôi không thể cài đặt bất cứ thứ gì trên máy chủ, vì tất cả ý định và mục đích, nó chỉ là không gian.

Lưu ý: Tôi đã thiết lập các cặp khóa rsa, để nó có thể diễn ra âm thầm.

Câu trả lời:


12

Công cụ được lựa chọn để đồng bộ hóa một chiều là rsync và công cụ được lựa chọn để đồng bộ hóa hai chiều là Unison . Cả hai yêu cầu thực thi phải có sẵn ở cả hai bên. Nếu bạn có thể tạo một tệp thực thi ở phía máy chủ, hãy bỏ tệp nhị phân unison và làm cho nó có thể thực thi được.

Nếu bạn có Linux, * BSD, Solaris hoặc Mac OS X cục bộ, có lẽ bạn có thể sử dụng hệ thống tệp FUSE để làm cho không gian máy chủ web xuất hiện dưới dạng hệ thống tệp cục bộ - sshfs sẽ hoạt động vì bạn dường như có quyền truy cập ssh. Sau đó sử dụng unison vào địa phương.

Cũng lưu ý rằng hầu hết các phần mềm kiểm soát phiên bản (CVS / Subversion cũng như VCS phân tán) đều có tính năng đồng bộ hóa dưới dạng một tính năng (kiểm tra trên một máy và trên máy khác).


4

Nếu nó được cài đặt trên máy chủ, hãy sử dụng rsyncbản dựng cho chính xác công việc đó.

Để làm cho nó hai chiều, hãy làm điều này (trích dẫn từ http://forums11.itrc.hp.com/service/forums/questionanswer.do?admit=109447626+1285799008594+28353475&threadId=1278777 ):

Để đồng bộ hóa hai chiều một thư mục /src/footrên hostAđể /dest/footrên hostB, bao gồm tất cả các thư mục con, bạn sẽ chạy các lệnh này trên hostA:

rsync -auz /src/foo hostB:/dest 
rsync -auz hostB:/dest/foo /src

Lệnh đầu tiên đẩy tất cả các file mà mới về hostAtới hostB.

Lệnh thứ hai sẽ kéo tất cả các file mà mới về hostBtới hostA. Các tùy chọn quan trọng là:

khi sao chép, bạn phải bảo toàn thời gian sửa đổi tập tin. -alàm điều này và những thứ khác;

Nếu bạn muốn duy trì thời gian sửa đổi, hãy sử dụng -tthay thế.

Để bỏ qua bất kỳ tệp nào mới hơn về đích: -uthực hiện điều này.


theo như tôi đã đọc rsync không thực hiện hai hướng và khi tôi cố gắng thì nó sẽ báo lỗi "phiên bản giao thức không khớp - vỏ của bạn có sạch không?"
Andrew Redd

hostanswers.net/linux-hosting/rsync-protatio-version-mismatch có thể giúp bạn khắc phục điều không phù hợp với phiên bản. Đối với điều hai chiều tôi đã cập nhật câu trả lời của tôi.
tante

1
Rsync không thích ứng với đồng bộ hóa hai chiều. Vì một điều nó sẽ không cảnh báo bạn nếu có xung đột. Thay vào đó, hãy sử dụng Unison, đây là công cụ phù hợp cho công việc.
Gilles 'SO- ngừng trở nên xấu xa'

1
Điều này sẽ phá vỡ khủng khiếp nếu máy chủ A trong tương lai từ máy chủ B. Trong trường hợp của tôi, tôi đi trước máy chủ từ xa 13 giờ.
Tim Post

1

Mỗi khi bạn cần đồng bộ giữa hai thư mục rsynclà một lựa chọn linh hoạt tuyệt vời. Vấn đề là, rsync sẽ không hỗ trợ giao thức ftp. Một cách giải quyết tốt cho việc này là curlFtpFS :

CurlFtpFS là một hệ thống tập tin để truy cập các máy chủ FTP dựa trên FUSE và libcurl.

Với curlFtpFs khá dễ dàng để bao gồm một thư mục ftp từ xa trong hệ thống tập tin của bạn.

Đây là một ví dụ ngắn cho thấy việc sử dụng cả hai công cụ:

curlftpfs -r -s ftp.foobar.com /foo
rsync -a /foo/ /bar
umount /foo

Đọc trang hướng dẫn để biết thêm thông tin.

Nếu bạn không muốn nỗ lực như vậy để cài đặt curlFtpFS và chỉ muốn giữ một số tệp đồng bộ hóa, có rất nhiều công cụ ftp cung cấp các tính năng đồng bộ hóa như vậy:

  • FTPSync.pl - tập lệnh PERL đơn giản để giữ đồng bộ cục bộ và thư mục từ xa
  • tinyx - một ứng dụng khách FTP không tương tác để cập nhật các trang web
  • filezilla - GUI FTP của khách hàng với nhiều tính năng
  • ...

1. Rupync không tốt cho đồng bộ hóa hai chiều , thay vào đó hãy sử dụng Unison. 2. FTP đến từ đâu? việc đề cập đến các khóa RSA trong câu hỏi gợi ý ssh (và do đó là sshfs).
Gilles 'SO- ngừng trở nên xấu xa'

Bạn đã đúng, FTP không được đề cập trong câu hỏi. Thành thật mà nói tôi nghĩ đó là sự kết hợp giữa "webspace" và "nó chỉ là không gian." và một chút mệt mỏi của tôi ngày hôm qua.
echox
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.