Автор: Рубрики: Общее Просмотрено: 186
Безопасное копирования файлов между хостами утилитой SCP. Основные ключи для SCP
06Мар2020

С помощью утилиты SCP (Secure Copy) можно осуществлять безопасное копирование данных между хостами в сети. При передаче данных с использованием SCP вся информация шифруется, так как утилита работает поверх SSH и может полностью обеспечить целостность и конфиденциальность переданных данных. Утилита простая в использовании, что есть большим плюсом. В UNIX-подобных операционных системах SCP в большинстве случаев входит в состав пакета OpenSSH.

Утилита SCP предоставляет возможность делать трансфер информации:

  • из локальной машины на удаленный сервер;
  • из удаленного сервера  на локальную машину;
  • между двумя удаленными серверами, обмен файлами происходит в обе стороны (можно и получать и отправлять данные).

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

Немного разберем сам алгоритм работы копирования файлов. Когда идет копирование исходного файла в файл назначения (куда будут копироваться данные), если указанный файл назначения уже создан,  SCP просто перезаписывает данные от исходного файла в файл назначения. Но если возникает ситуация, что файл назначения еще не существует, тогда создается пустой файл, ему задается имя такое же как у исходного файла и уже в него будет копируется содержимое исходного файла. 

 

Копирование между 2-мя серверами

Рассмотрим два примера копирования файлов на и из удаленного сервера.

 1) Для выполнения транспортировки файла с одного сервера на второй, подключаемся по SSH к серверу 1 с которого будет идти передача данных,  и в консоли вводим команду: 

scp /server1/directory/file  [email protected]:/remote/directory

Где:

  •  /server1/directory – путь к файлу, который нужно скопировать с сервера 1 на сервер 2;
  • file – название этого файла;
  • user – имя пользователя (любой пользователь с необходимыми правами с сервера, куда передается  файл);
  • remote.server2 – host  или IP адрес сервера, на который идет копирования информации;
  • /remote/directory – путь к месту куда нужно скопировать файл file с /server1/directory. Если не указать каталог, файл будет скопирован в домашний каталог удаленного пользователя.

commandscp1

Как только была указана команда жмем на клавишу Enter, далее система предложит ввести пароль для удаленного пользователя  с server2, задаем пароль и снова жмем на Enter, после чего начнется передача информации.

Напротив команды в терминале выводятся сведения касательно передачи файла.

scp222

Где:

  • первое поле (100%) указывает на то, сколько процентов файла было скопировано;
  • в следующем поле (значение 16) идет размер файла в байтах; 
  • далее (32.9КВ/s) это  скорость копирования файла;
  • и последнее число (00:00) определяет за сколько времени был перенесен файл.

 

2) Для копирования данных на сервер 1 из сервера 2, используем следующий синтаксис: 

scp [email protected]:/remote/directory/file  /server1/directory

Где:

  •  user – имя пользователя на удаленному сервере server2;
  • remote.server1 – host  или IP адрес  сервера 2 (server2);
  • /remote/directory/file – путь к файлу, который нужно скопировать с server2;
  • /server1/directory – каталог, куда нужно скопировать файл с server2 на server1.

gfhgdfgd

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

4scplinux

 

Копирование между локальной машиной и удаленным сервером

Чтобы передать файлы из локальной директории на удаленный сервер прописываем в терминале следующую команду:

scp /local/directory/file [email protected]:/remote/directory

Где:

  • /local/directory/ – путь к файлу, который копируется, с локальной машины;
  • file – названия файла, который нужно перевести с локальной машины на сервер;
  • user – имя пользователя удаленного сервера; 
  • remote.server – host  или IP адрес сервера;
  • /remote/directory – путь к месту, куда будет скопирован файл.

Чтобы скопировать себе файлы на локальную машину с удаленного сервера используем следующую команду:

scp [email protected]:/remote/directory/file /local/directory/

Где уже элемент команды file – это название файла, который мы хотим получить с сервера.

Утилита SCP предоставляет ряд опций (ключи), которые контролируют каждый аспект ее выполнения и добавляет дополнительных настройки. Ключи указываются сразу после  ввода “scp”. Например, по стандарту SSH-порт устанавливается как 22, но если нужно указать другой порт для удаленного сервера нужно использовать ключ -P и указываем номер порта.

7scp

Теперь пройдемся по всем широко используемых ключах:

-P – служит для указания SSH-порта удаленного сервера (при указании номера порта нужно быть уверенным, что этот порт открыт на сервере).

-p – чтобы сохранить информацию о  времени создания, модификации файлов, времени доступа и права исходного файла.

-q  – для отключения вывода на экран информации о выполнении копирования, сообщений с предупреждениями и ошибками. 

–v – вывод более подробной отладочной информации на экран, что удобно для  мониторинга процесса выполнения команды и отслеживания ошибок и сбоев.

8scpff

10scp

Если утилита SCP завершает работу с exit status 0 – это удачное завершение выполнения команды, когда значение больше 0 – это говорит об возникновении ошибки.

– включает функцию сжатия данных при передаче между системами.

– для замены дефолтного шифра  для шифрования данных при передаче.

-r – используется для рекурсивного копирования полностью всей директории (все подкаталоги и все файлы в этих подкаталогах).

Транспортировка файлов между системами, наверное, самая популярная задача, которая встречается  при работе с удаленными серверами. Если у Вас возникли трудности или вопросы при переносе данных, команда ГиперХост с радостью предоставляет помощь своим клиентам в решении этих задач.

Также если Вы планируете стать нашим клиентом и  Вам нужен перенос сайта на наш хостинг, смело обращайтесь в тикеты, наша техподдержка полностью бесплатно разместит Ваш сайт на наших серверах. 

187 раз(а) 5 Сегодня просмотрено раз(а)
  • Марина Семёнова

    А как посмотреть сколько места свободно в директории, куда я копирую. Если будет недостаточно, она выдаст ошибку или же будет копировать пока не упрётся?

    • Владимир Дот

      Будет выдан статус с цифрой больше ноля, что значит ошибку. Не волнуйся, копировать до упора точно будет.)))

      • Марина Семёнова

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