2009-03-19 32 views
8

Đối với khóa học hiện tại tôi đang dùng, chúng tôi đang sử dụng máy tính từ xa để chạy mã của chúng tôi (Đó là một cụm bốn nút, lập trình với MPI và C++).Cách tốt nhất để đồng bộ mã trên máy chủ từ xa bằng cách sử dụng SCP (SSH-Copy)

Tôi đang mã hóa cục bộ trên MacBook của mình và tôi đang tìm cách tốt để giữ mã cục bộ của tôi được cập nhật trên cụm.

Cách tôi đang làm là mở một thiết bị đầu cuối để chạy SCP để sao chép thư mục và một thiết bị đầu cuối khác đã được SSH-ed vào cụm để tạo và chạy mã của tôi.

Điều này có vẻ ít hơn tối ưu đối với tôi. Có cách nào mà tôi có thể tự động gửi các tập tin vào cụm khi chúng được sửa đổi? Hoặc là có một IDE (XCode, nếu có thể) mà sẽ cho phép tôi này?

Hoặc tôi có bị mắc kẹt với lệnh một dòng để di chuyển mọi thứ không? Tôi hiện đang sử dụng TextMate để viết mã.

Trả lời

14

Nếu bạn có thể sử dụng rsync, đó có thể là cách tốt nhất.

Có sử dụng sshfs để (cầu chì) gắn các thư mục từ xa là một tùy chọn không? Bạn có thể chỉnh sửa trực tiếp các tệp hoặc sử dụng rsync, unison hoặc bất kỳ công cụ đồng bộ hóa thư mục nào vào thư mục.

9

Tùy chọn tốt nhất của bạn, ngoài điều khiển phiên bản được phân phối, đang sử dụng rsync trên ssh. Tôi giữ một vài máy đồng bộ hóa bằng cách thực hiện các thao tác sau trên mỗi máy:

rsync -urltv --delete -e ssh /src.dir [email protected]:/src.dir 

Bạn đã đề cập sử dụng MacBook-rsync trên Mac OS X. Theo như tôi biết, nó không cần phải được cài đặt thêm. Và vẻ đẹp của rsync là nó tìm kiếm các sửa đổi và chỉ sao chép các tệp đã sửa đổi. Nó không kết hợp các sửa đổi đồng thời như hệ thống điều khiển phiên bản được phân phối, nhưng nếu bạn giống như tôi làm việc trên máy tính xách tay thì một số hoạt động trên máy tính của bạn, rsync là cách tốt nhất để gửi tất cả các tệp đã thay đổi (và chỉ các tập tin đã thay đổi) từ một đến khác khi bạn chuyển đổi chế độ.

Lưu ý: các tùy chọn rsync sử dụng ở đây là:

  • -u, --update bỏ các file mà mới trên máy thu
  • -r, recurse --recursive vào thư mục
  • -l, - liên kết sao chép symlinks dưới dạng symlink
  • -t, - giữ lại thời gian sửa đổi
  • -v, --verbose tăng cấp chi tiết
  • --delete xóa các tập tin không liên quan từ dirs dest, đóng vai trò như --delete-during

cuối cùng, -e là tùy chọn cho phép bạn chỉ định remote shell của bạn, trong trường hợp này ssh

+0

rsync chỉ chạy trên comp của tôi? Tôi chỉ tự hỏi trong trường hợp tôi không có quyền truy cập vào rsync trên cụm. –

+0

Không, bạn cần rsync ở cả hai đầu của đường hầm ssh. Điều này là rất phổ biến tuy nhiên vì vậy tôi chắc chắn sẽ hút nó và xem. – Evan

+0

Tôi sẽ phải kiểm tra điều này khi tôi về nhà. Một câu hỏi nữa, rsync có tìm kiếm các sửa đổi không? –

4

Tôi biết đó không phải là câu trả lời bạn biết nhưng bạn có thể thiết lập máy chủ SVN hoặc CVS, điều này sẽ dễ dàng hơn rất nhiều.

Nếu không, tôi sẽ dùng rsync.

0

Có lẽ không phải những gì bạn đang tìm kiếm, nhưng bạn nên có một cái nhìn tại một DSCM như git:

  1. tạo một kho lưu trữ trong các máy chủ từ xa.
  2. sao chép nó vào máy phát triển của bạn bằng ssh.
  3. thêm/sửa đổi mã
  4. sử dụng cam kết và nhấn (một lần nữa, trên ssh) để hợp nhất các thay đổi.
1

Thậm chí tốt hơn rsync là Unison file synchronizer, điều này sẽ cho phép bạn thực hiện thay đổi ở hai đầu và sẽ phát hiện và giúp giải quyết mọi xung đột. Nó hoạt động trên ssh.

Các vấn đề liên quan