8.7 Как скопировать файлы с сервера на сервер по протоколу SSH, MC, RSYNC
Как скопировать файлы по SSH
1. Подключитесь к серверу по протоколу SSH используя SSH клиент, например Putty:
2. Если вы введете правильные параметры доступа перед вами откроется след. окно с командной строкой:
3. Наберите в командной строке команду - mc и вы попадете в менеджер файлов:
4. В верхнем меню файлового менеджера нажмите Right -> Ftp Link.
5. Введите в окне параметры доступа в виде login_ftp:pass_ftp@name_server.com
и нажмите ОК.
6. В правом окне откроется список файлов на вашем удаленном сервере. Можете выполнять копирование между серверами, для этого внизу есть кнопка Copy.
Для максимально быстрого и удобного копирования большого количества файлов/папок больших размеров желательно использовать утилиту rsync, особенности которой - копирование без искусственных ограничений, сжатия и шифрования, из-за которых копирование по FTP и SSH и происходит не очень быстро, на фактической скорости чтения/записи дисков и пропускной способности сети.
Пример использования утилиты rsync и ее аттрибутов
Разберем работу утилиты на примере:
- 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сли на каком-то она не установлена - установить ее можно командой:
- apt-get install rsync
либо в случае Centos, AlmaLinux, RockyLinux:
- yum install rsync
Вышеописанная команда скопирует содержимое папки /var/www/exampleuser/data/www/
в папку /www
пользователя exampleuser
на сервер 91.234.35.81
.
При этом нужно будет указать пароль пользователя ‘exampleuser’. Можно также использовать root либо другого пользователя, при этом папку получателя нужно указывать с учетом корня пользователя.
Ключ ssh -c arcfour
дополнительно ускорит rsync за счет использования более простого метода шифрования.
Иногда так случается, что скорость копирования нужно ограничить (например для того, чтобы не нагружать сильно дисковую систему сервера). Для ограничения скорости можно использовать директиву:
- --bwlimit=KBPS
которая ограничит скорость ввода/вывода в указанном количестве Кбайт/с.
В примере, указанном выше команда с ограничением скорости копирования 10 МБ/С. Добавление опций заставляет rsync делать следующее:
-p, --perms
— перенос прав;-g, --group
— установить группу конечного файла таким же, как и у исходного;-o, --owner
— установить владельца конечного файла таким же, как и у исходного;
Разумеется, группы и пользователи должны существовать на целевом сервере, куда осуществляется копирование.
Также, бывают ситуации когда нужно исключить из копирования некоторый путь.
Тогда, нужно использовать директиву: --exclude='dir1/dir2/
Где dir1/dir2/
- это исключаемый путь, относительно базы указанной в качестве источника копирования.