Chuyển tập tin giữa hai máy chủ SSH từ xa


21

Có cách nào dễ dàng để chuyển tập tin giữa hai máy chủ SSH / SFTP không? Giải pháp hoàn hảo sẽ là FileZilla, nhưng nó chỉ cho phép bạn tạo kết nối giữa cục bộ và từ xa chứ không phải giữa từ xa và từ xa.

Về mặt lý thuyết tôi có thể mở hai cửa sổ Nautilus và kết nối với một số ssh://server1/path/to/folderssh://server2/path/to/foldervà sau đó chỉ cần kéo các tập tin từ một đến phía bên kia. Kinh nghiệm của tôi là điều này rất không ổn định. Việc truyền các tệp có tổng kích thước tức là 10MB không có vấn đề gì, nhưng việc truyền tức là 10GB thường dẫn đến việc Nautilus tự treo lên và vẫn còn đó khi cần ps -e | grep nautilus-> kill -9 <pid>. Tôi cũng đã thử nghiệm điều tương tự với Nemo và Caja. Mặc dù Nemo có xu hướng ổn định hơn hai người khác, nhưng nó vẫn không hoàn hảo và thỉnh thoảng cũng bị phá vỡ. FileZilla cực kỳ ổn định, không bao giờ thực sự khiến nó bị hỏng, nhưng nó không linh hoạt do thực tế được đề cập là nó chỉ có thể kết nối với một máy chủ SSH duy nhất.

Tất nhiên tôi cũng có thể gắn một thư mục với sshfs, nhưng đây là một giải pháp bất tiện. Quá nhiều công việc phải làm để có được một chuyển đơn giản đang chạy.

Có ứng dụng nào có thể xử lý chuyển giữa hai máy chủ SSH mà không bị hỏng không? Hoàn hảo sẽ là một cái gì đó giống như FileZilla, sẽ tiếp tục công việc nếu kết nối bị gián đoạn.


Không phải là một câu trả lời vì đây không phải là trang web đề xuất phần mềm, nhưng tôi đã sử dụng Beyond so sánh (thương mại) ( scootersoftware.com ) trong nhiều năm và nó chỉ tuyệt vời cho loại nhiệm vụ này. Nó cung cấp hai cửa sổ, cả hai cửa sổ có thể hiển thị đường dẫn cục bộ hoặc URL sftp: //, sẽ hiển thị sự khác biệt giữa các thư mục và khả năng sao chép chỉ là sự khác biệt tạo nên một cơ chế tiếp tục tuyệt vời nếu nó bị hỏng, rất hiếm khi xảy ra theo kinh nghiệm của tôi. (Không liên kết với họ ngoại trừ là một khách hàng hài lòng).
Guntram Blohm hỗ trợ Monica

Câu trả lời:


36

Nếu bạn đang sử dụng phiên bản Ubuntu vẫn được hỗ trợ, thì scplệnh của bạn sẽ cung cấp công -3tắc cho phép sao chép các tệp từ remote1 sang remote2 qua localhost :

me@local:~> scp -3 user1@remote1:/path/to/file1 user2@remote2:/path/to/file2

Bạn cũng có thể bỏ qua -3khóa chuyển, nhưng sau đó bạn sẽ cần khóa công khai ( id_rsa.pub) user1@remote1trong tệp authorized_keyscủa user2@remote2:

me@local:~> scp user1@remote1:/path/to/file1 user2@remote2:/path/to/file2

scpsau đó dưới mui xe làm một ssh user1@remote1đầu tiên và từ đó scp /path/to/file1 user2@remote2:/path/to/file2. Đó là lý do tại sao thông tin phải được phân phối khác với -3giải pháp.

Nói cách khác:

  • scp -3 remote1:file1 remote2:file2chuyển tập tin từ remote1 sang localhost và sau đó quay lại remote2 . Dữ liệu di chuyển từ xa1 → localhost → remote2 . Các localhost là bên thứ 3 trong kịch bản này, do đó -3. Để làm việc này, bạn sẽ cần thông tin đăng nhập từ localhost trên cả remote1remote2localhost kết nối với cả hai.

  • scp remote1:file1 remote2:file2sao chép tệp trực tiếp từ remote1 sang remote2 với tốc độ mà chúng được kết nối với nhau. localhost không liên quan ở đây (ngoài việc ban hành lệnh). Dữ liệu di chuyển từ xa1 → remote2 . Để làm việc này, bạn sẽ cần thông tin đăng nhập từ localhost chỉ trên remote1 nhưng ngoài ra, bạn cần thông tin đăng nhập của remote1 trên remote2localhost chỉ kết nối với remote1 và sau đó remote1 kết nối với remote2 .

Nếu có thể tôi sẽ chọn cách tiếp cận thứ hai. Như một số ý kiến ​​đã nói: thường thì cáp mạng giữa remote1remote2 dày hơn nhiều so với cáp giữa chúng và localhost .


2
Điều đó thật đẹp. ssh là con dao của phần mềm quân đội Thụy Sĩ. Cảm ơn, tôi đã học được điều gì đó.
Đá cẩm thạch hữu cơ

4
Lưu ý rằng phương pháp này, giống như phương pháp nautilus được mô tả trong câu hỏi, sẽ chuyển tệp đầu tiên sang máy cục bộ, sau đó đến máy chủ thứ hai. Điều này sẽ gây ra sự chậm chạp đáng kể khi hai máy chủ từ xa có liên kết nhanh hơn giữa chúng so với máy cục bộ. (Ví dụ: khi các máy chủ từ xa ở trong trung tâm dữ liệu và máy cục bộ có kết nối DSL.)
Stobor

1
@Stobor Điểm tốt, cảm ơn bạn. Tôi đã cập nhật câu trả lời của mình để làm rõ một chút cách dữ liệu di chuyển cùng và không có -3.
PerlDuck

1
Phương thức thứ hai có hoạt động với chuyển tiếp tác nhân, mà không có bất kỳ khóa hoặc mật khẩu nào trên remote1 không?
Eric Duminil

1
@EricDuminil Tôi sợ tôi không thể nói. Tôi không có kinh nghiệm thực sự với chuyển tiếp đại lý. Nhưng tôi nghi ngờ điều đó bởi vì remote1 có nghĩa vụ từ chối truy cập khi không cung cấp khóa và mật khẩu, phải không?
PerlDuck

10

Trong hầu hết các trường hợp, hai máy chủ ssh có thể liên lạc với nhau (hoặc ít nhất một máy chủ có thể tiếp cận nhau) và một lần nữa, trong hầu hết các trường hợp, internet của máy trạm kém hơn một trong hai máy chủ.

Nếu vậy, đặt hàng một máy chủ để chuyển sang máy chủ khác là cách để đi.

ssh server1 nohup scp somefile server2:somefile

Kiểm tra nohup.outlỗi trên server1.

Nếu khả năng tiếp cận máy chủ là cách khác, bạn có thể đảo ngược máy nào là chủ:

ssh server2 nohup scp server1:somefile somefile

7

Có lẽ bạn có thể sử dụng một trong một số giao diện người dùng GUI để rsync:

Có ứng dụng GUI nào cho lệnh rsync không?

Hoặc có lẽ bạn có thể sử dụng rsync trực tiếp từ dòng lệnh để kết nối với cả hai máy chủ từ xa:

"Cách rsync tập tin giữa hai điều khiển từ xa"

Tôi thường đăng nhập vào một máy chủ bằng ssh, sau đó từ dòng lệnh của máy chủ đó sử dụng rsync để đẩy hoặc kéo tệp sang máy chủ từ xa khác - điều đó thường nhanh hơn nhiều so với việc cố gắng chuyển các tệp qua máy tính thứ 3.

Rsync đủ thông minh để thực hiện một số công việc, sau đó nếu có sự cố xảy ra và làm gián đoạn quá trình, sau đó nó có thể tiếp tục ngay tại nơi nó rời đi.


0

Bạn cần sử dụng giao thức SCP. scp file you want to transfer login@address_of_second_server:/path_where_you_want_to_save


2
OP muốn sao chép các tập tin giữa hai máy tính từ xa, không phải từ máy tính cục bộ sang máy tính từ xa. Ông dường như cũng đang tìm kiếm một giải pháp GUI.
dùng68186

@ user68186 câu trả lời của tôi là hợp lệ.
Gravemind
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.