İki uzak SSH sunucusu arasında dosya aktarma


21

İki SSH / SFTP sunucusu arasında dosya aktarmanın kolay bir yolu var mı? Mükemmel çözüm FileZilla olacaktır, ancak yalnızca yerel ve uzak arasında bir bağlantı oluşturmanıza izin verir, ancak uzak ve uzak arasında bir bağlantı oluşturmanıza izin vermez.

Teorik olarak iki Nautilus pencereler açmak ve bazı bağlanmak olabilir ssh://server1/path/to/folderve ssh://server2/path/to/folderdaha sonra başka tarafa birinden dosyaları çekin. Benim deneyimim bu çok dengesiz olmasıdır. Dosyaların toplam büyüklüğü yani 10 MB olması sorun değil, ancak 10 GB'ın aktarılması çoğu zaman Nautilus'un kendini kapatıp ps -e | grep nautilus-> ihtiyacı içinde kalmasına neden oldu kill -9 <pid>. Aynı şeyi Nemo ve Caja ile de test ettim. Nemo diğerlerinden daha kararlı olma eğilimindeyken, yine de mükemmel değildir ve zaman zaman kırılır. FileZilla son derece kararlıdır, hiçbir zaman kırmayacaktır, ancak yalnızca tek bir SSH sunucusuna bağlanabildiği için belirtilen esneklikten dolayı esnek değildir.

Tabii ki ayrıca bir klasör de ekleyebilirim sshfs, ama bu biraz uygunsuz bir çözüm. Çalışan basit bir transfer almak için yapılacak çok iş var.

İki SSH sunucusu arasındaki aktarımları bozmadan gerçekleştirebilecek herhangi bir uygulama var mı? Perfect, FileZilla gibi bir şey olurdu, bağlantı koparsa işi tekrar alır.


Cevap değil, çünkü bu bir yazılım önerme sitesi değildir, ancak (ticari) Beyond Compare'i ( scootersoftware.com ) yıllardır kullanıyorum ve bu tür bir görev için harika. Her ikisi de yerel bir yol veya sftp gösterebilen iki pencere sunar: // URL, klasörler arasındaki farkları gösterir ve yalnızca farkları kopyalayabilme özelliği, çok nadiren gerçekleşirse, mükemmel bir özgeçmiş mekanizması yapar tecrübelerime göre. (Memnun bir müşteri olmadıkça bunlarla ilişki kurmayın).
Guntram Blohm, Monica

Yanıtlar:


36

Hala desteklenmektedir Bir Ubuntu sürümü üzerinde ise, o zaman scpkomut sağlayacaktır -3kopyalama dosyaları sağlayan anahtarı REMOTE1 için REMOTE2 üzeri localhost :

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

Ayrıca atlayabilirsiniz -3anahtarı, ancak o zaman genel anahtarı (gerekecektir id_rsa.pubarasında) user1@remote1dosyasında authorized_keysarasında user2@remote2:

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

scpSonra kaputun altında bir ssh user1@remote1ilk ve oradan scp /path/to/file1 user2@remote2:/path/to/file2. Bu nedenle kimlik bilgisi -3çözümden farklı olarak dağıtılmalıdır .

Diğer bir deyişle:

  • scp -3 remote1:file1 remote2:file2dosyayı aktarır REMOTE1 için localhost geri sonra ve REMOTE2 . Veriler uzaktaki1 → localhost → uzaktaki2'ye gider . Localhost dolayısıyla bu senaryoda 3 partidir -3. İşe Bunun için, kimlik bilgileri gerekir localhost hem REMOTE1 ve REMOTE2 çünkü localhost her ikisi bağlanır.

  • scp remote1:file1 remote2:file2kopyalar doğrudan dosya REMOTE1 için REMOTE2 birbirlerine bağlanmıştır wich ile hızında. localhost burada yer almaz (emri vermenin yanı sıra). Veri hareket Uzaktan 1 → REMOTE2 . İşe Bunun için, kimlik bilgileri gerekir localhost yalnızca REMOTE1 ama buna ek kimlik bilgilerini gerek REMOTE1 üzerinde REMOTE2 çünkü localhost bağlandığı için REMOTE1 sadece ve sonra Uzaktan 1 erişim sağlanır REMOTE2 .

Mümkünse ikinci yaklaşımı seçerdim. Bazı yorumların söylediği gibi: genellikle uzak1 ile uzak2 arasındaki ağ kablosu , bunlar ile localhost arasındaki kablodan çok daha kalındır .


2
Bu sadece güzel. ssh, yazılımın İsviçre çakısıdır. Sağol, bir şey öğrendim.
Organik Mermer

4
Bu yaklaşımın, soruda açıklanan nautilus yaklaşımı gibi, dosyayı önce yerel makineye, ardından ikinci sunucuya aktaracağını unutmayın. Bu, iki uzak sunucu, aralarında yerel makineden daha hızlı bir bağlantıya sahip olduğunda önemli yavaşlamaya neden olur. (Örneğin, uzak sunucular veri merkezlerindeyken ve yerel makine DSL bağlantısına sahip olduğunda.)
Stobor

1
@Stobor İyi nokta, teşekkür ederim. Verilerin nasıl ve ne olmadan gittiğini netleştirmek için cevabımı güncelledim -3.
PerlDuck

1
İkinci yöntem, remote1 üzerinde herhangi bir anahtar veya parola olmadan, aracı yönlendirme ile çalışır mı?
Eric Duminil

1
@EricDuminil Korkarım söyleyemem. Ajan iletme konusunda gerçek bir tecrübem yok. Ancak, ne anahtar ne de parola sağlandığında remote1'in erişimi reddetmesi gerektiğinden şüpheliyim, değil mi?
PerlDuck

10

Çoğu durumda, iki ssh sunucusu birbirine erişebilir (veya en azından biri diğerine erişebilir) ve yine çoğu durumda iş istasyonunun interneti, sunuculardan ikisinden de daha kötüdür.

Öyleyse, bir sunucudan diğerine aktarma emri gitmek yoludur.

ssh server1 nohup scp somefile server2:somefile

nohup.outSunucu1'de hata olup olmadığını kontrol edin .

Eğer sunucu erişilebilirliği etrafınızdaki diğer yol ise, hangi makinenin ana olduğunu tersine çevirebilirsiniz:

ssh server2 nohup scp server1:somefile somefile

7

Belki de rsync için birkaç GUI ön ucundan birini kullanabilirsiniz:

Rsync komutu için herhangi bir GUI uygulaması var mı?

Veya belki de uzaktaki her iki sunucuya bağlanmak için rsync'i doğrudan komut satırından kullanabilirsiniz:

Msgstr "İki uzaktan kumanda arasında dosya nasıl senkronize edilir"

Genellikle ssh ile bir sunucuya giriş yapıyorum, o zaman o sunucunun komut satırından, dosyaları diğer uzak sunucuya itmek veya çekmek için rsync'i kullanıyorum - bu genellikle dosyaları bazı 3. bilgisayarlardan aktarmaya çalışmaktan çok daha hızlı.

Rsync bazı işler yapacak kadar akıllıdır, o zaman bir şeyler ters giderse ve işlemi keserse, kaldığı yerden devam edebilir.


0

SCP protokolünü kullanmanız gerekir. scp file you want to transfer login@address_of_second_server:/path_where_you_want_to_save


2
OP, dosyaları yerel bilgisayardan uzak bilgisayara değil, iki uzak bilgisayar arasında kopyalamak istiyor. Ayrıca bir GUI çözümü arıyor gibi görünüyor.
user68186

@ user68186 cevabım geçerlidir.
Gravemind
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.