Rsync trên ssh, hoặc cái gì khác?


10

Tôi đã cố gắng sử dụng rsync trên OSX sang Linux hoặc hộp Unix mà tôi không có nhiều quyền kiểm soát. Tôi đã làm một cái gì đó như thế này

rsync -avz -e ssh remoteuser@remotehost:/remote/dir /this/dir/ 

Lỗi trả về là:

bash: rsync: không tìm thấy lệnh rsync: kết nối bị đóng đột ngột (đã nhận được 0 byte) ) [người nhận = 2.6.9]

Tuy nhiên, sau khi đọc các tài liệu tôi bắt đầu nghĩ rằng tôi thực sự sẽ cần phải cài đặt một daemon rsync trên máy chủ từ xa.

  1. Tôi có phải cài đặt máy chủ rsync trên máy chủ từ xa không?
  2. Các lựa chọn thay thế miễn phí - GUI hoặc không phải GUI - không yêu cầu cài đặt bất cứ thứ gì trên máy chủ từ xa ?

Cảm ơn!


1
Các vấn đề chính xác bạn đang gặp phải với lệnh hiện tại của bạn là gì?
fideli

@fideli, xin lỗi, quên mất điều đó. Chỉnh sửa câu hỏi ngay bây giờ
Dan Rosenstark

1
Cảm ơn câu hỏi này, nhưng bạn có thể gắn thẻ rsynckhông?
Andrew Grimm

Câu trả lời:


21

Bạn cần một lệnh rsync trên máy chủ, nhưng bạn không cần chạy daemon.

Nhận một nhị phân rsync hoạt động trên máy chủ, đặt nó ở đâu đó trong nhà của bạn và thêm cờ này vào dòng lệnh của bạn : --rsync-path=/home/user/path/to/rsync.

Nếu bạn không muốn sao chép rsync vào máy chủ, bạn có thể sử dụng scp hoặc sshfs.

sshfs user@host ~/sync/user-host
rsync -av ~/local-dir ~/sync/user-host/remote-dir

Trong trường hợp đó, rsync sẽ chạy hoàn toàn cục bộ, nhưng những thay đổi sẽ được truyền đến máy chủ.


Tôi thích giải pháp đó rất nhiều, đặc biệt vì máy chủ là gói lưu trữ giá rẻ trên GoDaddy và tôi nghi ngờ tôi sẽ có thể chạy rsync trên máy chủ. +1 ngay bây giờ!
Dan Rosenstark

Con đường dễ nhất để cài đặt sshfs trên OSX là gì? MacFuse hoặc có cái gì dễ dàng hơn?
Dan Rosenstark

MacFuse + (MacFusion hoặc sshfs-static-Leopard), tôi nghĩ (Tôi không phải là người dùng OSX)
Tobu

Có MacFuse làm điều đó. Chỉ cần trang tải xuống cho nhị phân sshfs cung cấp cho bạn tệp nhị phân có phần mở rộng .gz. Vì vậy, bạn phải đổi tên nó thay vì gunzip'ing nó. Khó chịu nhưng không sao bây giờ! Cảm ơn
Dan Rosenstark

6

Bạn cần phải có rsync trên máy chủ từ xa - không nhất thiết phải là máy chủ rsync (mà theo tôi, sẽ không xử lý kết nối ssl nào), nhưng rsync trên hộp cục bộ cần nói chuyện với rsync trên hộp từ xa. Bạn đang sử dụng ssh để liên kết hai.

Giả sử rsync tồn tại trên hộp từ xa, nó không nằm trong đường dẫn tìm kiếm mặc định cho ssh của bạn đã đăng nhập. Tùy thuộc vào sở thích và quyền của bạn trên hộp từ xa, bạn có thể thử

  • sử dụng tùy chọn --rsync-path =
  • thay đổi PATH mặc định cho shell ssh từ xa của bạn
  • thêm một bí danh cho rsync trong vỏ ssh từ xa
  • thay đổi lệnh từ xa đã thực hiện thành đường dẫn tuyệt đối thành rsync

hoặc một cái gì đó tương tự. Nếu rsync như một thực thi (máy chủ phó) không tồn tại trên máy chủ từ xa, nó sẽ phải được thêm vào.


Điều này rất hữu ích, vì vậy +1, nhưng tôi tự hỏi làm thế nào để chỉ định thư mục bắt đầu cho rsync ở phía Windows nếu tôi chạy nó từ Mac sang PC như thế này: superuser.com/questions/1462861/
Ryan

1

Không có nhiều điểm khi sử dụng rsync mà không chạy daemon rsync trên máy chủ từ xa, bất chấp giải pháp sshfs sáng tạo được đề xuất ở trên. Toàn bộ ý tưởng về hiệu quả trong rsync là để hai trường hợp so sánh các bản sao dữ liệu cục bộ của họ bằng cách tính toán tổng kiểm tra cục bộ, so sánh chúng qua mạng và chỉ truyền dữ liệu thực tế cho các phần của các tệp đó thực sự khác nhau.

Nếu bạn sử dụng sshfs hoặc bất kỳ giá treo mạng nào, điều đó chỉ che giấu thực tế là nó phải sao chép toàn bộ tập dữ liệu trên mạng từ máy chủ từ xa để tính toán tổng kiểm tra cục bộ, sau đó truyền sự khác biệt lên trên đó. Sẽ nhanh hơn và rẻ hơn khi xóa mọi thứ cục bộ và 'scp -r' rất nhiều.


3
Không chính xác, bởi vì rsync kiểm tra xem các tệp có được sửa đổi theo kích thước và dấu thời gian hay không và điều đó vẫn hiệu quả hơn nhiều so với việc quét tất cả các tệp. Nhưng thực tế, cơ chế cập nhật gia tăng rsync trong các tệp không có ý nghĩa đối với sshfs.
Jaap Eldering

0

Hãy thử SCP . Vì bạn đã có quyền truy cập ssh, bạn không cần phải cài đặt bất cứ thứ gì khác trên máy chủ từ xa :)

Để sao chép tệp từ máy chủ từ xa sang localhost, hãy sử dụng:

# scp -R remoteuser@remotehost:/remote/dir /this/dir/ 

Hoặc sao chép tệp từ localhost sang máy chủ từ xa bằng:

# scp -R /this/dir remoteuser@remotehost:/remote/dir 

1
Cảm ơn Lee, SCP rất tuyệt nhưng nó không "đồng bộ hóa" phải không?
Dan Rosenstark

1
nó phải là một "r" nhỏ:scp -r
0x4a6f4672
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.