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

Простое руководство, которое поможет вам перенести файлы в удаленную систему из вашей системы Linux с помощью команды scp.

SCP означает «Защищенная копия». scp - это утилита командной строки, предлагаемая Linux, которая позволяет передавать файлы и каталоги с одного компьютера на другой по незащищенной сети.

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

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

В этом уроке мы увидим различные примеры scp команда. Мы также рассмотрим некоторые из часто используемых опций с scp команда.

Начало работы с командой scp

С помощью scp командой вы можете передавать файлы / каталоги:

  • С вашего локального компьютера на удаленный.
  • Между двумя удаленными машинами.
  • С удаленной машины на локальную.

Общий синтаксис:

scp [Option] [source_file_name] [user @ destination_Host]: destination_folder

Давайте разберемся с основными атрибутами этой команды один за другим.

  • [source_file_name] Это исходный файл, который вы хотите скопировать.
  • [пользователь @ destination_Host] Это имя пользователя удаленной системы, в которую вы хотите скопировать файл. IP-адрес удаленного компьютера также используется в этом атрибуте после "@' символ.
  • [папка назначения] Это каталог, в котором вы хотите сохранить скопированный файл.

Примечание: Толстая кишка (:) используется в синтаксисе, поскольку он различает локальные и удаленные местоположения. Мы используем двоеточие (:) с удаленной системой, чтобы указать каталог, в который должны быть скопированы файлы. Если мы не укажем целевой каталог, файлы будут скопированы в домашний каталог пользователя удаленной системы.

Параметры, используемые с scp

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

ВариантОписание
-Cразрешить сжатие файла для передачи
-vдать подробный вывод
рекурсивно копировать файлы и каталоги
-псохранять разрешения, режимы и время доступа к файлам
изменить порт по умолчанию, используемый scp команда

Мы увидим примеры этих опций далее в руководстве.

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

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

Общий синтаксис:

scp [имя_файла] удаленный_пользователь @ хост: [папка-адресат]

Пример:

scp apache-tomcat-9.0.8.tar.gz [email protected]: gaurav

В этом примере мы копируем файл «apache-tomcat-9.0.8.tar.gz» из локальной системы в удаленную систему с IP-адресом «143.110.178.221».

В удаленной системе файл будет скопирован в каталог с именем «gaurav».

Вывод:

gaurav @ ubuntu: ~ $ scp apache-tomcat-9.0.8.tar.gz [email protected]: gaurav [email protected] пароль: apache-tomcat-9.0.8.tar.gz 100% 9589KB 79.8KB / s 02:00 gaurav @ ubuntu: ~ $ 

Давайте проверим вывод файла в удаленной системе.

root @ ubuntu-s-1vcpu-1gb-blr1-01: ~ / gaurav # ls apache-tomcat-9.0.8.tar.gz root @ ubuntu-s-1vcpu-1gb-blr1-01: ~ / gaurav #

Таким образом, файл успешно скопирован в удаленную систему с помощью scp команда.

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

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

Общий синтаксис:

scp [файл 1] [файл 2] [файл n] имя_удаленного_пользователя @ удаленный_хост: [конкретный каталог]

Давайте разберемся в этом простом процессе на примере.

Пример:

scp ath.html abc.txt ppa-purge_0.2.8 + bzr56_all.deb [email protected]: gaurav

Здесь несколько файлов упоминаются в команде для копирования в удаленную систему.

Вывод:

gaurav @ ubuntu: ~ $ scp ath.html abc.txt ppa-purge_0.2.8 + bzr56_all.deb [email protected]: gaurav [email protected] пароль: ath.html 100% 199 КБ 94,7 КБ / с 00: 02 abc.txt 100% 0 0,0 КБ / с 00:00 ppa-purge_0.2.8 + bzr56_all.deb 100% 4360 42,2 КБ / с 00:00 gaurav @ ubuntu: ~ $

В удаленной системе:

root @ ubuntu-s-1vcpu-1gb-blr1-01: ~ / gaurav # ls -l total 9800 -rw-r - r-- 1 root root 0 5 октября 08:58 abc.txt -rw-r-- r-- 1 root root 9818695 5 октября 08:35 apache-tomcat-9.0.8.tar.gz -rw-r - r-- 1 root root 204057 5 октября 08:58 ath.html -rw-r-- r-- 1 root root 4360 5 октября 08:58 ppa-purge_0.2.8 + bzr56_all.deb root @ ubuntu-s-1vcpu-1gb-blr1-01: ~ / gaurav #

Все три файла теперь скопированы в удаленную систему.

Копирование каталога в удаленную систему

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

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

Общий синтаксис:

scp -r [путь к каталогу] имя_удаленного_пользователя @ удаленный_хост: [целевой_каталог]

Пример:

scp -r PycharmProjects [email protected]: gaurav

Вывод:

gaurav @ ubuntu: ~ $ scp -r PycharmProjects [email protected]: gaurav [email protected] пароль: __main__.py 100% 623 7,8 КБ / с 00:00 __init__.py 100% 23 0,4 КБ / с 00 : 00 Завершение.py 100% 2929 28,1 КБ / с 00:00 search.py ​​100% 4728 38,7 КБ / с 00:00 uninstall.py 100% 2963 32,5 КБ / с 00:00 hash.py 100% 1681 21,3 КБ / с 00:00 check.py 100% 1430 16,8 КБ / с 00:00 configuration.py 100% 7125 50,4 КБ / с 00:00 show.py 100% 6289 49,8 КБ / с 00:00 download.py 100% 6623 48,2 КБ / с 00:00 gaurav @ ubuntu: ~ $ 

С помощью вариант с scp команда копирует все подпапки и файлы в каталоге с локального компьютера в удаленную систему.

Отображение подробной информации о процессе scp

Вы можете использовать -v (нижний регистр v) для отображения информации о файлах, которые копируются на удаленную или локальную систему. Этот тип вывода также называется подробным выводом.

При использовании этой опции на экране отображается полная отладочная информация о файле.

Общий синтаксис:

scp -v [имя_файла] имя_пользователя @ хост_пользователя:

Пример:

scp -v apache-tomcat-9.0.8.tar.gz [email protected]: команда

Вывод:

gaurav @ ubuntu: ~ $ scp -v apache-tomcat-9.0.8.tar.gz [email protected]: команда Выполнение: программа / usr / bin / ssh host 159.89.170.11, пользователь root, команда scp -v -t team OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 декабря 2017 г. debug1: чтение данных конфигурации /home/gaurav/.ssh/config debug1: чтение данных конфигурации / etc / ssh / ssh_config debug1: / etc / ssh / ssh_config строка 19: Применение параметров для * debug1: подключение к порту 22 159.89.170.11 [159.89.170.11]. debug1: соединение установлено. debug1: key_load_public: нет такого файла или каталога debug1: identity file /home/gaurav/.ssh/id_rsa type -1 apache-tomcat-9.0.8.tar.gz 100% 9589KB 99.8KB / s 01:36 debug1: client_input_channel_req: канал 0 rtype exit-status reply 0 debug1: channel 0: free: client-session, nchannels 1 debug1: fd 0 очистка O_NONBLOCK debug1: fd 1 очистка O_NONBLOCK Передано: отправлено 9826736, получено 4016 байт, за 97,2 секунды Байт в секунду: отправлено 101133.9, получено 41.3 debug1: Exit status 0 gaurav @ ubuntu: ~ $ 

Здесь, в выходных данных, вы можете видеть, что отладочная информация файла отображается на вашем терминале, когда scp команда используется с -v вариант.

Передача файлов между двумя удаленными хостами

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

Общий синтаксис:

scp remote_user_1 @ host_1: / [имя_файла] remote_user_2 @ host_2: [folder_to_save]

Синтаксис может показаться немного шире, но он довольно прост. Здесь первая часть команды дает информацию об удаленном пользователе, откуда файл должен быть скопирован. двоеточие (:) и / используется для указания имени файла или имени каталога, который будет передаваться между двумя удаленными машинами.

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

Пример:

scp -r [email protected]: gaurav [email protected]: / team

Здесь мы будем рекурсивно копировать каталог с именем «gaurav» из локальной системы в удаленную. Файл будет скопирован в папку team на удаленной системе.

Вывод:

gaurav @ ubuntu: ~ $ scp -r [email protected]: / gaurav [email protected]: / team [email protected] пароль: 1.py 100% 134 261,3 КБ / с 00:00 variables.py 100% 377 949,2 КБ / с 00:00 abc.txt 100% 0 0,0 КБ / с 00:00 ath.html 100% 199 КБ 41,8 МБ / с 00:00 gaurav @ ubuntu: ~ $

Здесь мы использовали scp команда в локальной системе для переноса каталога с именем gaurav с одного удаленного сервера на другой.

Перенос файлов из удаленной системы в локальную.

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

Общий синтаксис:

scp имя_пользователя @ хост_пользователя: /files/file.txt / [папка_локальной_системы]

Вывод:

gaurav @ ubuntu: ~ $ scp [email protected]: how.txt. [email protected] пароль: how.txt 100% 11 0,1KB / s 00:00 gaurav @ ubuntu: ~ $

Здесь я загрузил (скопировал) файл с удаленного сервера в свой домашний каталог. Следовательно, я использовал точку (.) указать в команде копирование файла в мой домашний каталог.

Пример вывода:

gaurav @ ubuntu: ~ $ ls -l how.txt -rw-r - r-- 1 gaurav gaurav 11 октября 6 09:49 how.txt gaurav @ ubuntu: ~ $ 

Здесь файл скопирован в мой домашний каталог с удаленного сервера.

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

Сжатие файлов для более быстрой передачи

Иногда передача больших файлов может занять много времени. Эту проблему можно решить, используя scp команда с -C (верхний регистр C) вариант.

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

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

Общий синтаксис:

scp -C [имя_файла] имя_пользователя @ хост_пользователя: [целевая_папка]

Давайте посмотрим на сравнительный пример, чтобы понять разницу.

Передача без опции -C:

gaurav @ ubuntu: ~ $ scp -rv dlink [email protected]: команда Выполнение: программа / usr / bin / ssh host 68.183.82.183, пользователь root, команда scp -v -r -t team OpenSSH_7.6p1 Ubuntu-4ubuntu0. 3, OpenSSL 1.0.2n 7 декабря 2017 г. debug1: Чтение данных конфигурации /home/trinity/.ssh/config debug1: Чтение данных конфигурации / etc / ssh / ssh_config debug1: / etc / ssh / ssh_config строка 19: Применение параметров для * debug1 : Соединение с 68.183.82.183 [68.183.82.183] порт 22. debug1: соединение установлено. debug1: client_input_channel_req: канал 0 rtype exit-status reply 0 debug1: канал 0: свободный: клиент-сеанс, nchannels 1 debug1: fd 0 очистка O_NONBLOCK debug1: fd 1 очистка O_NONBLOCK Передано: отправлено 7516504, получено 4008 байт, за 74,6 секунды Байт в секунду: отправлено 100693.7, получено 53.7 debug1: статус выхода 0 gaurav @ ubuntu: ~ $ 

Из вышеприведенного вывода мы видим, что время, необходимое для передачи, составляет 74,6 секунды. Мы попробуем передать тот же файл, используя параметр -C, и заметим разницу.

Передача с опцией -C:

gaurav @ ubuntu: ~ $ scp -Crv dlink [email protected]: команда Выполнение: программа / usr / bin / ssh host 68.183.82.183, пользователь root, команда scp -v -r -t team OpenSSH_7.6p1 Ubuntu-4ubuntu0. 3, OpenSSL 1.0.2n 7 декабря 2017 г. debug1: Чтение данных конфигурации /home/trinity/.ssh/config debug1: Чтение данных конфигурации / etc / ssh / ssh_config debug1: / etc / ssh / ssh_config строка 19: Применение параметров для * debug1 : Соединение с 68.183.82.183 [68.183.82.183] порт 22. debug1: соединение установлено. . . webupload.img 100% 1834 КБ 98,7 КБ / с 00:18 Режимы отправки файлов: C0664 1877552 router.img Приемник: C0664 1877552 router.img router.img 100% 1834 КБ 100,3 КБ / с 00:18 Приемник: E Режимы отправки файлов: C0664 3754103 DSL-2750U-Release-IN-T-01.00.07.zip Приемник: C0664 3754103 DSL-2750U-Release-IN-T-01.00.07.zip DSL-2750U-Release-IN-T-01.00.07.zip 100% 3666 КБ 218,5 КБ / с 00:16 Приемник: E debug1: client_input_channel_req: канал 0 rtype ответ статуса выхода 0 debug1: канал 0: свободный: клиент-сеанс, nchannels 1 debug1: fd 0 очистка O_NONBLOCK debug1: fd 1 очистка O_NONBLOCK Передано: отправлено 7518864, получено 3828 байт, за 51,0 секунды Байт в секунду: отправлено 100245,4, получено 51,0 debug1: статус выхода 0 debug1: сжатие исходящих данных: необработанные данные 7511925, сжатые 7513136, коэффициент 1.00 debug1: сжатие входящих: необработанные данные 1467, сжатые 999, коэффициент 0,68 gaurav @ ubuntu: ~ $

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

Использование другого порта ssh для передачи файлов

При использовании scp команда развернутый порт по умолчанию - это порт 22. Пользователь может выбрать порт по своему усмотрению. Вы можете использовать (опция P в верхнем регистре) с scp команда для использования порта по вашему выбору.

Общий синтаксис:

cp -P [номер_нового_порта] [имя_файла / имя_каталога] удаленный_пользователь @ хост: [папка-адресат]

Пример:

scp -P 4248 dlink [email protected]: команда

Используя указанную выше команду, файл будет перенесен на удаленный сервер. Но на этот раз используемый порт будет порт 4248 вместо значения по умолчанию порт 22.

Вывод

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

Категория: Linux