Передача файлів між двома віддаленими серверами SSH


21

Чи існує простий спосіб передачі файлів між двома серверами SSH / SFTP? Ідеальним рішенням буде FileZilla, але воно дозволяє лише створювати зв’язок між локальним та віддаленим, але не між віддаленим та віддаленим.

Теоретично я міг би відкрити два вікна Nautilus і підключити до деяких ssh://server1/path/to/folderі ssh://server2/path/to/folderпотім просто витягти файли з однієї в іншу сторону. Мій досвід полягає в тому, що це дуже нестабільно. Передача файлів сумою розміру, тобто 10 Мб, не є проблемою, але передача, тобто 10 Гб, часто призводить до того, що Nautilus зависає і залишається там, де потрібно ps -e | grep nautilus-> kill -9 <pid>. Я тестував те ж саме з Немо та Каджею. Хоча Немо, як правило, стабільніше, ніж два інших, він все ще не є ідеальним, а також час від часу ламається. FileZilla надзвичайно стабільний, ніколи насправді не вдається зламати, але він не дуже гнучкий через згаданий факт, що він може підключатися лише до одного SSH-сервера.

Звичайно, я міг би також змонтувати папку sshfs, але це незручне рішення. Занадто багато попередньої роботи, щоб виконати просту передачу.

Чи є програма, яка може обробляти передачі між двома серверами SSH, не порушуючи їх? Ідеальним було б щось на зразок FileZilla, яке знову бере роботу, якщо зв’язок перервався.


Не відповідь, тому що це не сайт рекомендацій щодо програмного забезпечення, але я використовую (комерційний) "Більше порівняння" ( scootersoftware.com ) протягом багатьох років, і це просто чудово підходить для такого роду завдань. Він пропонує два вікна, обидва з яких можуть показувати локальний шлях або sftp: // URL, показуватимуть відмінності між папками, а його здатність копіювати лише відмінності робить відмінний механізм відновлення, якщо він зламається, що трапляється дуже рідко в моєму досвіді. (Не переживає їх, за винятком задоволеного замовника).
Гунтрам Блом підтримує Моніку

Відповіді:


36

Якщо ви користуєтеся версією Ubuntu, яка все ще підтримується, ваша scpкоманда забезпечить -3перемикач, який дозволяє копіювати файли з remote1 на remote2 через localhost :

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

Ви також можете опустити -3вимикач, але тоді вам буде потрібен відкритий ключ ( id_rsa.pub) з user1@remote1в файл authorized_keysз user2@remote2:

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

scpто під кришкою робиться ssh user1@remote1спочатку і звідти scp /path/to/file1 user2@remote2:/path/to/file2. Ось чому обліковий запис повинен бути розподілений інакше, ніж -3рішення.

Іншими словами:

  • scp -3 remote1:file1 remote2:file2передає файл з remote1 в localhost, а потім назад у remote2 . Дані подорожують віддалено1 → localhost → remote2 . Локальний є третьою стороною в цьому випадку, отже -3. Для цього вам знадобляться облікові дані localhost як на віддаленому1, так і на віддаленому2, оскільки localhost підключається до обох.

  • scp remote1:file1 remote2:file2копіює файл безпосередньо з remote1 на remote2 зі швидкістю, з якою вони з'єднані один з одним. localhost тут не задіяний (окрім видачі команди). Дані пересуваються віддалено1 → віддалено2 . Для цього вам знадобляться облікові дані з localhost тільки на remote1, але додатково потрібні облікові дані remote1 на remote2, оскільки localhost підключається лише до remote1, а потім remote1 підключається до remote2 .

Якщо можливо, я обрав би другий підхід. Як уже зазначають деякі коментарі: зазвичай мережевий кабель між remote1 та remote2 набагато товщі, ніж кабель між ними та localhost .


2
Це просто красиво. ssh - швейцарський армійський ніж програмного забезпечення. Спасибі, я чомусь навчився.
Органічний мармур

4
Зауважте, що такий підхід, як і підхід nautilus, описаний у питанні, передасть файл спочатку на локальну машину, а потім на другий сервер. Це призведе до значного уповільнення, коли два віддалені сервери мають швидший зв’язок між ними, ніж це робить локальна машина. (Наприклад, коли віддалені сервери знаходяться в центрах обробки даних, а локальна машина має з'єднання DSL.)
Stobor

1
@Stobor Добрий момент, дякую. Я оновив свою відповідь, щоб трохи уточнити, як пересуваються дані з і без -3.
PerlDuck

1
Чи буде другий метод працювати з переадресацією агента, не маючи ключа або пароля на віддаленому1?
Ерік Думініл

1
@EricDuminil Боюся, що не можу сказати. У мене немає реального досвіду з переадресацією агента. Але я сумніваюся в цьому, оскільки віддалений1 повинен заборонити доступ, коли не надаються ні ключ, ні пароль, чи не так?
PerlDuck

10

У більшості випадків два ssh-сервери можуть дістатися один до одного (або принаймні один може дістатися до іншого), і знову ж таки, у більшості випадків Інтернет робочої станції набагато гірший, ніж будь-який із серверів.

Якщо так, то замовлення перенести один сервер на інший - це шлях.

ssh server1 nohup scp somefile server2:somefile

Перевірте nohup.outна сервері1 наявність помилок.

Якщо доступність сервера - навпаки, ви можете змінити, яка машина є головним:

ssh server2 nohup scp server1:somefile somefile

7

Можливо, ви можете використовувати один з декількох інтерфейсів графічного інтерфейсу для rsync:

Чи є програма GUI для команди rsync?

Або, можливо, ви могли використовувати rsync безпосередньо з командного рядка для підключення до обох віддалених серверів:

"Як rsync файли між двома віддаленими"

Я часто входжу на один сервер за допомогою ssh, тоді з командного рядка цього сервера використовую rsync для натискання або перетягування файлів на інший віддалений сервер - це, як правило, набагато швидше, ніж намагатися перенести файли через якийсь 3-й комп'ютер.

Rsync досить розумний, щоб виконати якусь роботу, тож якщо щось піде не так і перерве процес, він може пізніше відновитись там, де він припинився.


0

Вам потрібно використовувати протокол SCP. scp file you want to transfer login@address_of_second_server:/path_where_you_want_to_save


2
ОП хоче копіювати файли між двома віддаленими комп'ютерами, а не з локального на віддалений комп'ютер. Він також, здається, шукає рішення GUI.
user68186

@ user68186 моя відповідь справедлива.
Могила
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.