Простое руководство, которое поможет вам перенести файлы в удаленную систему из вашей системы 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
Команда оказывается очень полезной для передачи файлов, когда вам нужно работать с более чем одной системой, а также с удаленными серверами одновременно.