Копіювання файлів через SSH
SSH (Secure Shell) – це широко використовуваний протокол для безпечного доступу до віддалених серверів і керування ними через зашифроване з’єднання. Однією з найпоширеніших задач при роботі з SSH є копіювання файлів між вашою локальною машиною і віддаленим сервером або між двома віддаленими серверами.
У цій статті ми розглянемо різні способи копіювання файлів по SSH, включаючи використання SCP (Secure Copy Protocol), rsync та інших методів.
Навіщо використовувати SSH для передачі файлів?
Використання SSH для передачі файлів має кілька переваг:
- Безпека: SSH шифрує як команду, так і дані під час передачі, забезпечуючи захист конфіденційної інформації.
- Ефективність: SSH швидкий і надійний, дозволяє передавати файли безпосередньо між системами без необхідності окремого входу в систему.
- Автоматизація: SSH можна інтегрувати в скрипти, що дозволяє автоматизувати передачу файлів між серверами або локальними машинами.
1. Копіювання файлів за допомогою SCP (протокол безпечного копіювання)
SCP – один з найпопулярніших інструментів для безпечного копіювання файлів через SSH. Він дозволяє передавати файли з локальної машини на віддалений сервер, з віддаленого сервера на локальну машину або між двома віддаленими серверами.
Базовий синтаксис SCP:
Приклад 1: Копіювання файлу з локальної машини на віддалений сервер
У цьому прикладі
- /path/to/local/file – шлях до файлу на вашій локальній машині.
- username@remote_host – ім’я користувача SSH та ім’я хоста або IP-адреса віддаленого сервера.
- /шлях/до/віддаленого/призначення – шлях, де буде збережено файл на віддаленому сервері.
Приклад 2: Копіювання файлу з віддаленого сервера на локальну машину
У цьому випадку файл передається з віддаленого сервера на локальну машину.
Приклад 3: Рекурсивне копіювання каталогу
Щоб скопіювати весь каталог, скористайтеся опцією -r (рекурсивний):
Це перенесе каталог і весь його вміст на віддалений сервер.
Корисні опції SCP:
- -P [порт]: Вкажіть порт SSH, якщо він відрізняється від стандартного (22).
- -C: Увімкнути стиснення під час передачі для швидшого копіювання файлів.
- -i [файл_ідентифікації]: Використовувати певний приватний ключ SSH для автентифікації.
2. Копіювання файлів за допомогою rsync
rsync – ще один потужний інструмент для передачі файлів по SSH. Йому часто надають перевагу для передачі великих або повторюваних файлів, оскільки він копіює лише зміни між джерелом і пунктом призначення, заощаджуючи час і пропускну здатність.
Базовий синтаксис rsync:
Приклад 1: Копіювання файлу з локальної машини на віддалений сервер
Приклад 2: Копіювання каталогу за допомогою rsync
Корисні параметри rsync:
- -a: Режим архівування, у якому зберігаються символічні посилання, дозволи, мітки часу та права власності на файли.
- -v: Докладний режим для відображення прогресу під час передачі.
- -z: Увімкнути стиснення для пришвидшення передачі.
- –видалити: Видалити файли у місці призначення, які більше не існують у джерелі.
- -e “ssh -p [порт]”: Вказати власний порт SSH.
3. Копіювання файлів між двома віддаленими серверами
За допомогою SSH ви також можете копіювати файли безпосередньо між двома віддаленими серверами. І SCP, і rsync підтримують цю можливість.
Приклад 1: Копіювання файлів між двома віддаленими серверами за допомогою SCP
Приклад 2: Копіювання файлів між двома віддаленими серверами за допомогою rsync
Це особливо корисно для передачі файлів між серверами без необхідності їх попереднього завантаження на вашу локальну машину.
4. Копіювання файлів за допомогою SFTP (протокол передачі файлів SSH)
SFTP – це ще один метод безпечної передачі файлів через SSH. Він схожий на FTP, але використовує SSH для забезпечення шифрування. SFTP зазвичай використовується в інтерактивних сеансах, але також може бути автоматизований.
Використання SFTP:
Щоб розпочати сеанс SFTP, виконайте наступну команду:
Опинившись у запрошенні SFTP, ви можете використовувати такі команди, як:
- put /path/to/local/file /path/to/remote/destination: Завантажує файл з вашого локального комп’ютера на віддалений сервер.
- get /path/to/remote/file /path/to/local/destination: Завантажити файл з віддаленого сервера на ваш локальний комп’ютер.
- mput і mget: Щоб завантажити або викачати кілька файлів одночасно.
Щоб вийти з сеансу SFTP, введіть exit або quit.
5. Автоматизація передачі файлів за допомогою ключів SSH
Для багаторазового передавання файлів варто налаштувати автентифікацію на основі ключів SSH, щоб не вводити пароль щоразу.
Крок 1: Згенеруйте пару ключів SSH (якщо у вас їх ще немає)
На локальній машині запустіть:
У результаті буде згенеровано пару відкритого і закритого ключів.
Крок 2: Копіювання відкритого ключа на віддалений сервер
Скопіюйте ваш відкритий ключ на віддалений сервер за допомогою наступної команди:
Тепер ви можете входити в систему і передавати файли без необхідності вводити пароль, що спрощує автоматизацію.
Висновок
Копіювання файлів по SSH – це безпечний і ефективний спосіб передачі даних між вашим локальним комп’ютером і віддаленим сервером або між двома віддаленими серверами. Незалежно від того, чи використовуєте ви SCP, rsync або SFTP, SSH пропонує зашифровану передачу файлів, яка захищає ваші дані від перехоплення. Такі інструменти, як SCP, є простими для одноразової передачі, тоді як rsync ідеально підходить для постійних завдань синхронізації, особливо для великих файлів або каталогів. Розуміння цих інструментів допоможе вам ефективніше керувати передачею файлів, особливо у віддаленому серверному середовищі.