6.3.4 Как скопировать файлы с сервера на сервер с помощью протокола SSH

Главный банер

Перемещение файлов между серверами – неотъемлемая часть работы системных администраторов и разработчиков. Давайте подробно рассмотрим три метода для копирования файлов между серверами, используя протоколы SSH. Расмотрим на примерах утилит SCP, Midnight Commander (MC) и Rsync.

Для начала работы, Вам нужно подключиться к серверу, с помощью протокола SSH.

Использование утилиты SCP

SCP (Secure Copy Protocol) – это протокол и командная утилита для безопасной копии файлов между компьютерами через SSH (Secure Shell). Она обеспечивает защищенную передачу данных и шифрование в процессе передачи. С помощью утилиты можно копировать как с удаленного сервера, так и на сам удаленный сервер.

Пример: копирования информации с локальной машины на удалённый сервер

Для копирования информации с локальной машины на удалённый сервер используйте команду вида:

Синтаксис команды:
  1. scp /путь/к/локальному/файлу пользователь@удаленный_сервер:/путь/на/удаленном/сервере/
Пример уже готовой команды:
  1. scp /var/www/user_name/data user@s1.thehost.com.ua:/var/www/user_name/data/
  • /var/www/user_name/data: путь к каталогу локального и удаленного сервера
  • user: пользователь, который должен иметь доступ к ssh
  • s1.thehost.com.ua: адрес/ip удаленного сервера, в Вашем случае адрес, скорее всего, будет отличаться.
Пример: копирования информации с удалённого сервера на локальный компьютер

Для копирования информации с удалённого сервера на локальный компьютер используйте команду вида:

Синтаксис команды:
  1. scp пользователь@удаленный_сервер:/путь/на/удаленном/сервере/локальный_файл /путь/на/локальной/машине/
Пример уже готовой команды:
  1. scp user@s1.thehost.com.ua:/var/www/user_name/data /var/www/user_name/data/

Оба этих примера используют утилиту SCP для безопасного копирования файлов по протоколу SSH. Важно убедиться, что у Вас есть необходимые права и возможность получить доступ к файлам и каталогам как на удаленном, так и локальном серверах.

Использование утилиты MC

Midnight Commander (MC) – текстовый файловый менеджер для командной строки в Unix-подобных операционных системах. Он предоставляет удобный интерфейс для навигации по файловой системе, копирования, перемещения, удаления файлов, а также поддерживает архивацию и работу с удаленными серверами через протоколы FTP и SFTP. Midnight Commander является эффективным инструментом для управления файлами в текстовом режиме.

Утилита может отсутствовать на Вашем сервере. Вы всегда можете выполнить установку утилиты с помощью команды:

Для Ubuntu/Debian
  1. apt-get install mc
Для Centos/AlmaLinux/RockyLinux:
  1. yum install mc
Пример: использования Midnight Commander

1. Откройте терминал.

2. Запустите Midnight Commander, введя команду:

user@hosting.server:
  1. mc

3. В разделе Right выберите Shell link. Окно утилиты МС

4. В появившемся окне введите адрес удаленного сервера, в следующем формате:

  1. sh://пользователь@удаленный_сервер/путь/на/удаленном/сервере/
  • пользователь: пользователь удаленного сервер
  • удаленный_сервер: адрес/ip удаленного сервера
  • /путь/на/удаленном/сервере/: путь к нужному каталогу

5. При первом подключении, нужно подтвердить ключ безопасности, прописав в консоли yes.

  1. Are you sure you want to continue connecting (yes/no)?

6. Теперь у Вас есть доступ к файлам и каталогам удаленного сервера, в правой панели.

7. Используйте стандартные команды MC, такие, как F5 (копировать), F6 (переместить), F8 (удалить), чтобы управлять файлами и каталогами на удаленном сервере.

8. Для завершения работы с MC, нажмите F10 или Esc, а затем 0 (ноль).

Использование утилиты Rsync

Rsync (Remote Sync) – утилита для синхронизации файлов и директорий между локальной и удаленной системой. Она обеспечивает эффективную передачу данных, пересылая только измененные части файлов и минимизируя объем передаваемой информации. Rsync часто используется для резервного копирования, обновления удаленных файлов и синхронизации данных между компьютерами через сеть. Утилита предоставляет гибкие опции конфигурации и является мощным инструментом для эффективной работы с данными.

Для работы с утилитой она должна быть установлена на обоих серверах. Eсли на каком-то она не установлена – установить ее можно командой:

Для Ubuntu/Debian
  1. apt-get install rsync
Для Centos/AlmaLinux/RockyLinux:
  1. yum install rsync
Пример: копирования с локального сервера на удаленный сервер
Синтаксис команды:
  1. rsync -avr -e ssh --progress /путь/к/локальному/каталогу/ пользователь@удаленный_сервер:/путь/на/удаленном/сервере/
Пример уже готовой команды:
  1. rsync -avr -e ssh --progress /var/www/user_name/data/ user@s1.thehost.com.ua:/var/www/user_name/data/

Команда может включать дополнительные ключи, при формировании команды:

  • -a, --archive: режим архива, включает рекурсивное копирование, сохранение прав доступа, временных меток и прочих атрибутов файлов.
  • -v, --verbose: подробный вывод, отображает информацию о процессе копирования.
  • -z, --compress: сжатие данных во время передачи.
  • -h, --human-readable: человеко-читаемый формат вывода.
  • -e, --rsh: указание альтернативной команды для передачи данных (например, SSH).
  • -u, --update: копировать только более новые файлы.
  • -r, --recursive: рекурсивное копирование директорий.
  • -n, --dry-run: операция “пробного запуска”, при которой не выполняются реальные изменения.
  • --progress: вывод информации о прогрессе передачи данных.
  • --bwlimit=1000: ключ ограничивает скорость передачи данных до 1000 килобайт в секунду. Может быть настроен, если нужно ограничить скорость передачи.
Пример: копирования с удаленного сервера на локальный компьютер
Синтаксис команды:
  1. rsync -avr -e ssh --progress пользователь@удаленный_сервер:/путь/на/удаленном/сервере/ локальный_каталог/
Пример уже готовой команды:
  1. rsync -avr -e ssh --progress user@s1.thehost.com.ua:/var/www/user_name/data/ var/www/user_name/data/

Эти примеры помогут Вам освоить использование команд для копирования файлов между серверами. Выберите метод в зависимости от Ваших предпочтений и требований Вашего проекта.