Безопасное копирования файлов между хостами утилитой SCP. Основные ключи для SCP
С помощью утилиты SCP (Secure Copy) можно осуществлять безопасное копирование данных между хостами в сети. При передаче данных с использованием SCP вся информация шифруется, так как утилита работает поверх SSH и может полностью обеспечить целостность и конфиденциальность переданных данных. Утилита простая в использовании, что есть большим плюсом. В UNIX-подобных операционных системах SCP в большинстве случаев входит в состав пакета OpenSSH.
Утилита SCP предоставляет возможность делать трансфер информации:
- из локальной машины на удаленный сервер;
- из удаленного сервера на локальную машину;
- между двумя удаленными серверами, обмен файлами происходит в обе стороны (можно и получать и отправлять данные).
Конечно же перед началом работы должен быть настроен SSH, так как по этому протоколу происходить передача данных. И чтобы иметь возможность копировать файлы, у пользователя должны быть как минимум права на чтение исходного файла и права на запись в целевой системе.
Немного разберем сам алгоритм работы копирования файлов. Когда идет копирование исходного файла в файл назначения (куда будут копироваться данные), если указанный файл назначения уже создан, SCP просто перезаписывает данные от исходного файла в файл назначения. Но если возникает ситуация, что файл назначения еще не существует, тогда создается пустой файл, ему задается имя такое же как у исходного файла и уже в него будет копируется содержимое исходного файла.
Копирование между 2-мя серверами
Рассмотрим два примера копирования файлов на и из удаленного сервера.
1) Для выполнения транспортировки файла с одного сервера на второй, подключаемся по SSH к серверу 1 с которого будет идти передача данных, и в консоли вводим команду:
scp /server1/directory/file user@remote.server2:/remote/directory
Где:
- /server1/directory – путь к файлу, который нужно скопировать с сервера 1 на сервер 2;
- file – название этого файла;
- user – имя пользователя (любой пользователь с необходимыми правами с сервера, куда передается файл);
- remote.server2 – host или IP адрес сервера, на который идет копирования информации;
- /remote/directory – путь к месту куда нужно скопировать файл file с /server1/directory. Если не указать каталог, файл будет скопирован в домашний каталог удаленного пользователя.
Как только была указана команда жмем на клавишу Enter, далее система предложит ввести пароль для удаленного пользователя с server2, задаем пароль и снова жмем на Enter, после чего начнется передача информации.
Напротив команды в терминале выводятся сведения касательно передачи файла.
Где:
- первое поле (100%) указывает на то, сколько процентов файла было скопировано;
- в следующем поле (значение 16) идет размер файла в байтах;
- далее (32.9КВ/s) это скорость копирования файла;
- и последнее число (00:00) определяет за сколько времени был перенесен файл.
2) Для копирования данных на сервер 1 из сервера 2, используем следующий синтаксис:
scp user@remote.server2:/remote/directory/file /server1/directory
Где:
- user – имя пользователя на удаленному сервере server2;
- remote.server1 – host или IP адрес сервера 2 (server2);
- /remote/directory/file – путь к файлу, который нужно скопировать с server2;
- /server1/directory – каталог, куда нужно скопировать файл с server2 на server1.
При необходимости одновременного копирования нескольких файлов, перечисляем файлы через запятую в фигурных скобках.
Копирование между локальной машиной и удаленным сервером
Чтобы передать файлы из локальной директории на удаленный сервер прописываем в терминале следующую команду:
scp /local/directory/file user@remote.server:/remote/directory
Где:
- /local/directory/ – путь к файлу, который копируется, с локальной машины;
- file – названия файла, который нужно перевести с локальной машины на сервер;
- user – имя пользователя удаленного сервера;
- remote.server – host или IP адрес сервера;
- /remote/directory – путь к месту, куда будет скопирован файл.
Чтобы скопировать себе файлы на локальную машину с удаленного сервера используем следующую команду:
scp user@remote.server:/remote/directory/file /local/directory/
Где уже элемент команды file – это название файла, который мы хотим получить с сервера.
Утилита SCP предоставляет ряд опций (ключи), которые контролируют каждый аспект ее выполнения и добавляет дополнительных настройки. Ключи указываются сразу после ввода “scp”. Например, по стандарту SSH-порт устанавливается как 22, но если нужно указать другой порт для удаленного сервера нужно использовать ключ -P и указываем номер порта.
Теперь пройдемся по всем широко используемых ключах:
-P – служит для указания SSH-порта удаленного сервера (при указании номера порта нужно быть уверенным, что этот порт открыт на сервере).
-p – чтобы сохранить информацию о времени создания, модификации файлов, времени доступа и права исходного файла.
-q – для отключения вывода на экран информации о выполнении копирования, сообщений с предупреждениями и ошибками.
–v – вывод более подробной отладочной информации на экран, что удобно для мониторинга процесса выполнения команды и отслеживания ошибок и сбоев.
Если утилита SCP завершает работу с exit status 0 - это удачное завершение выполнения команды, когда значение больше 0 - это говорит об возникновении ошибки.
-С – включает функцию сжатия данных при передаче между системами.
-с – для замены дефолтного шифра для шифрования данных при передаче.
-r – используется для рекурсивного копирования полностью всей директории (все подкаталоги и все файлы в этих подкаталогах).
Транспортировка файлов между системами, наверное, самая популярная задача, которая встречается при работе с удаленными серверами. Если у Вас возникли трудности или вопросы при переносе данных, команда ГиперХост с радостью предоставляет помощь своим клиентам в решении этих задач.
Также если Вы планируете стать нашим клиентом и Вам нужен перенос сайта на наш хостинг, смело обращайтесь в тикеты, наша техподдержка полностью бесплатно разместит Ваш сайт на наших серверах.