Поиск по сайту:

Как использовать команду SCP


В Linux копирование файлов в локальной системе выполняется командой cp. Когда дело доходит до копирования файлов через удаленные системы, лучше всего подходит команда scp. Команда scp использует протокол SSH для копирования файлов между двумя местоположениями.

В этом руководстве вы узнаете, как использовать команду scp в Linux.

Команда SCP в Linux

Команда scp предустановлена во всех дистрибутивах Linux. Установка дополнительных пакетов не требуется.

Для работы с scp требуется, чтобы SSH был установлен как на локальной, так и на удаленной машинах. Сам инструмент scp в своей основе использует SSH. Это отражено во всем использовании scp. Синтаксис и использование очень похожи на работу с SSH. Если у вас есть опыт работы с SSH, вам будет проще понять scp. Вот краткое руководство по использованию SSH.

Подобно SSH, команда scp подключается к определенной учетной записи пользователя в удаленной системе. Вам необходимо знать имя пользователя и пароль учетной записи пользователя. Обратите внимание, что учетная запись удаленного пользователя также должна иметь права доступа к файлам в целевом каталоге (в удаленной системе). Вот подробное руководство по правам доступа к файлам в Linux и владению ими.

Передача данных с помощью scp зашифрована, поэтому не нужно опасаться кражи данных.

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

Базовая структура команды:

Все команды scp обычно имеют следующую структуру команд. Здесь мы будем копировать файл с локальной машины на удаленную.

$ scp <options> <source_username@source_ip_address>:<local_file> <remote_username>@<remote_ip_address>:&ltremote_directory>

Вот краткий обзор структуры команды.

  • : различные параметры scp, определяющие поведение scp, например, порт SSH, конфигурация SSH, шифр, рекурсивная копия и т. д.

  • :: Подобно команде Linux cp, это «источник». Он определяет исходный файл/каталог для копирования в целевое расположение.
    Если «» не указан, то scp автоматически предполагает, что это локальное имя пользователя на локальном компьютере.

  • @:: аналогично команде cp, это «назначение». Структура аналогична тому, что вы вводите при подключении к удаленной системе через SSH.
    Если «» не указан, то scp автоматически предполагает, что это локальное имя пользователя на локальном компьютере.

Копирование локального файла в удаленный каталог

Вот фиктивный текстовый файл. Это текстовый файл размером 2 МБ, содержащий повторяющийся текст.

$ cat dummy.txt

Следующая команда scp скопирует текстовый файл на удаленный компьютер. Используйте флаг «-v» для подробного вывода.

$ scp -v /home/viktor/Desktop/dummy.txt cloudsigma@x.x.x.x:/home/cloudsigma

Если вы хотите сохранить файл под другим именем, вам необходимо указать имя файла в месте назначения. Например, следующая команда сохранит «dummy.txt» как «renamed-dummy.txt» на удаленном компьютере.

$ scp /home/viktor/Desktop/dummy.txt cloudsigma@x.x.x.x:/home/cloudsigma/renamed-dummy.txt

Копирование удаленного файла на локальный компьютер

Команда scp также может копировать удаленный файл в локальный каталог.

Для демонстрации «dummy.txt» хранится на удаленной машине. Чтобы скопировать его локально, используйте следующую команду.

$ scp cloudsigma@x.x.x.x:/home/cloudsigma/dummy.txt /home/viktor/

Чтобы сохранить файл с другим именем файла, укажите имя файла в команде.

$ scp cloudsigma@x.x.x.x:/home/cloudsigma/dummy.txt /home/viktor/dummy-local.txt

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

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

Например, давайте скопируем файл «dummy.txt» с одного удаленного компьютера на другой.

$ scp -v cloudsigma@x.x.x.x:/home/cloudsigma/dummy.txt cloudsigma@y.y.y.y:/home/cloudsigma/dummy-copy.txt

Копирование нескольких файлов

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

В следующем примере давайте скопируем файлы dummy_1.txt, dummy_2.txt и dummy_3.txt на удаленный компьютер.

$ scp dummy_1.txt dummy_2.txt dummy_3.txt cloudsigma@x.x.x.x:/home/cloudsigma

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

$ scp dummy_*.txt cloudsigma@x.x.x.x:/home/cloudsigma

Увеличение скорости передачи файлов с помощью сжатия

Команда scp обменивается трафиком через сеть. Именно пропускная способность сети в конечном итоге определяет скорость передачи файлов. Однако при фиксированной пропускной способности можно увеличить эффективную скорость передачи файлов с помощью сжатия. Инструмент scp имеет встроенную такую функцию.

Уникальность в том, что данные сжимаются только в сети. Когда файл достигает места назначения, он возвращается к исходному размеру.

Чтобы включить сжатие, используйте флаг «-C».

$ scp -C dummy_*.txt cloudsigma@x.x.x.x:/home/cloudsigma/

Алгоритм шифрования

Как упоминалось ранее, scp шифрует передачу данных, чтобы предотвратить кражу данных. По умолчанию данные шифруются с использованием шифрования AES-128. Для шифрования можно использовать разные шифры.

Для шифрования scp использует SSH. Следующая команда SSH выведет список всех поддерживаемых шифров. Все они действительны и для scp.

$ ssh -Q cipher

Например, следующая команда scp будет использовать алгоритм aes256-ctr для шифрования файлов.

$ scp -C -c aes256-ctr dummy_*.txt cloudsigma@x.x.x.x:/home/cloudsigma/

Ограничение пропускной способности

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

Чтобы ограничить пропускную способность, используйте флаг «-l», за которым следует ограничение пропускной способности. Здесь значение ограничения пропускной способности будет указано в килобитах в секунду (кбит/с).

$ scp -C -l 800 dummy.txt cloudsigma@x.x.x.x:/home/cloudsigma/dummy-remote.txt

Спецификация порта

Подобно SSH, scp по умолчанию использует порт 22. Однако, если SSH настроен для работы на другом порту, его необходимо объявить в команде.

Чтобы указать конкретный порт, используйте флаг «-P», за которым следует номер порта.

$ scp -C -P 1234 dummy.txt cloudsigma@x.x.x.x:/home/cloudsigma/dummy-remote.txt

Рекурсивное копирование каталога

Подобно команде cp, для копирования каталога и всех его подкаталогов/файлов используйте флаг «-r». Если каталог содержит много файлов/папок, то рекомендуется использовать сжатие для более быстрой передачи данных.

Вот демонстрационный каталог с фиктивными файлами и каталогами.

$ tree dummy

Следующая команда скопирует этот каталог в удаленное место.

$ scp -C -r dummy/ cloudsigma@x.x.x.x:/home/cloudsigma

Отключение индикатора выполнения и предупреждающих сообщений

По умолчанию scp сообщает о ходе операции и предупреждающих/диагностических сообщениях на экране. Однако всю эту выводимую информацию можно отключить. Это полезно, если вы реализуете scp в скрипте.

Чтобы отключить прогресс и предупреждающие/диагностические сообщения, используйте флаг «-q».

$ scp -C -q dummy.txt cloudsigma@x.x.x.x:/home/cloudsigma/dummy-remote.txt

Заключение:

Использовать команду scp очень просто. Все, что вам нужно, это иметь надлежащее понимание и опыт использования SSH. Это лишь некоторые из самых основных методов использования scp. Для получения более подробной информации о scp посетите справочную страницу.

$ man scp

Удачных вычислений!

Статьи по данной тематике: