8.7 Как скопировать файлы с сервера на сервер по протоколу SSH, MC, RSYNC

Как скопировать файлы по SSH

1. Подключитесь к серверу по протоколу SSH используя SSH клиент, например Putty:

Подключение по SSH

2. Если вы введете правильные параметры доступа перед вами откроется след. окно с командной строкой:

Подключение по SSH 2

3. Наберите в командной строке команду - mc и вы попадете в менеджер файлов:

Менеджер файлов mc

4. В верхнем меню файлового менеджера нажмите Right -> Ftp Link.

5. Введите в окне параметры доступа в виде login_ftp:pass_ftp@name_server.com и нажмите ОК.

Менеджер файов mc 2

6. В правом окне откроется список файлов на вашем удаленном сервере. Можете выполнять копирование между серверами, для этого внизу есть кнопка Copy.

Для максимально быстрого и удобного копирования большого количества файлов/папок больших размеров желательно использовать утилиту rsync, особенности которой - копирование без искусственных ограничений, сжатия и шифрования, из-за которых копирование по FTP и SSH и происходит не очень быстро, на фактической скорости чтения/записи дисков и пропускной способности сети.

Пример использования утилиты rsync и ее аттрибутов

Разберем работу утилиты на примере:

  1. rsync -apogvr -e "ssh -c arcfour" --progress --bwlimit=10240 /var/www/exampleuser/data/www/ exampleuser@91.234.35.81:/var/www/exampleuser/data/www

Приведенную команду нужно запустить по SSH на исходящем сервере (с которого мы копируем данные). Также ее можно запустить и сервер получателя, но тогда нужно поменять местами получателя и отправителя (exampleuser@91.234.35.81:/var/www/exampleuser/data/www /var/www/exampleuser/data/www/).

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

  1. apt-get install rsync

либо в случае Centos, AlmaLinux, RockyLinux:

  1. yum install rsync

Вышеописанная команда скопирует содержимое папки /var/www/exampleuser/data/www/ в папку /www пользователя exampleuser на сервер 91.234.35.81.

При этом нужно будет указать пароль пользователя ‘exampleuser’. Можно также использовать root либо другого пользователя, при этом папку получателя нужно указывать с учетом корня пользователя.

Ключ ssh -c arcfour дополнительно ускорит rsync за счет использования более простого метода шифрования.

Иногда так случается, что скорость копирования нужно ограничить (например для того, чтобы не нагружать сильно дисковую систему сервера). Для ограничения скорости можно использовать директиву:

  1. --bwlimit=KBPS

которая ограничит скорость ввода/вывода в указанном количестве Кбайт/с.

В примере, указанном выше команда с ограничением скорости копирования 10 МБ/С. Добавление опций заставляет rsync делать следующее:

  • -p, --perms — перенос прав;
  • -g, --group — установить группу конечного файла таким же, как и у исходного;
  • -o, --owner — установить владельца конечного файла таким же, как и у исходного;

Разумеется, группы и пользователи должны существовать на целевом сервере, куда осуществляется копирование.

Также, бывают ситуации когда нужно исключить из копирования некоторый путь.

Тогда, нужно использовать директиву: --exclude='dir1/dir2/

Где dir1/dir2/ - это исключаемый путь, относительно базы указанной в качестве источника копирования.