Общие команды SCP с примерами для копирования файлов и папок

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

Содержание скрыть

Что такое SCP?

SCP означает протокол безопасного копирования. Это безопасный и эффективный метод копирования файлов и каталогов между локальным и удаленным хостами или между двумя удаленными хостами. Он широко используется для безопасной передачи данных по сети. SCP опирается на SSH (Secure Shell) для создания безопасного соединения и шифрования данных при передаче. Независимо от того, нужно ли вам переместить один файл или целый каталог, SCP обеспечивает надежное решение для удаленной передачи файлов.

Как работает SCP?

SCP построен на базе протокола SSH – криптографического сетевого протокола для безопасного удаленного входа в систему и выполнения команд. Он использует те же механизмы безопасности, что и SSH, включая шифрование и аутентификацию, для защиты данных при передаче. При использовании SCP пользователь инициирует команду копирования на своем локальном компьютере, в которой указывает исходный файл и место назначения на удаленном компьютере. SCP устанавливает SSH-соединение с удаленной системой, а затем безопасно копирует файлы из источника в место назначения.

Когда использовать SCP?

SCP особенно полезен в следующих сценариях.

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

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

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

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

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

Синтаксис команды SCP

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

Синтаксис команды SCP выглядит следующим образом:

scp [options] [source] [destination]

Объяснение синтаксиса

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

-r: Рекурсивно копирует каталоги и их содержимое.
-p: Сохраняет разрешения, временные метки и режимы исходного файла.
-P: Указывает номер порта для SSH-соединения.
-i: Указывает файл закрытого ключа для аутентификации по SSH.
-C: Использовать сжатие для ускорения передачи данных.
-l: Ограничить полосу пропускания, используемую для передачи данных (в Кбит/с).
-v: Режим Verbose – отображение отладочных сообщений во время передачи данных.
-o: Передает опцию клиенту SSH. С ее помощью можно отключить строгую проверку ключей хоста.

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

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

Примеры команд

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

scp /path/to/local/file.txt user@remotehost:/path/to/destination/

/path/to/local/file.txt: Это исходный файл, который нужно скопировать с локальной машины.

user@remotehost: Замените user на имя удаленного пользователя, а remote host – на имя хоста или IP-адрес удаленного сервера.

/path/to/destination/: Это путь назначения на удаленном сервере, куда будет скопирован файл.

Пример: В моем случае я выбрал один удаленный сервер для передачи файла.

Имя пользователя удаленного узла – abhishekvarma

Адрес удаленного хоста – 192.168.29.70

scp /home/vboxuser/Desktop/sample.zip abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop

При подключении к удаленной машине она запрашивает пароль. Здесь я выбрал zip-файл для копирования.

Выход

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

sample.zip 100% 20KB 717.9KB/s 00:00

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

scp user@remotehost:/path/to/remote/file.txt /path/to/local/destination/

То же, что и выше, замените пользователя и адрес удаленного хоста.

Пример

scp abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop

Выход

Это просто пример вывода в моем случае. Временная метка меняется в зависимости от скорости соединения.

sample.zip 100% 20KB 51.2KB/s 00:00

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

scp user@remotehost:/path/to/remote/file.txt /path/to/local/destination/

Здесь флаг ‘-r’ указывает SCP копировать каталоги рекурсивно (включая подкаталоги и их содержимое).

Пример

scp -r /home/vboxuser/Desktop abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop

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

Выход

sample.zip 100% 20KB 1.0MB/s 00:00 Скриншот от 2023-08-13 21-45-23.png 100% 27KB 1.5MB/s 00:00 .swp 100% 12KB 894.2KB/s 00:00 .help.swp 100% 12KB 780.4KB/s 00:00

Копирование файлов, соответствующих шаблону

scp /path/to/local/*.txt user@remotehost:/path/to/destination/

*.txt – шаблон, который соответствует всем файлам с расширением .txt в указанном локальном каталоге. Пути источника и назначения такие же, как и раньше.

Пример

scp /home/vboxuser/Desktop/locfolder/*.png abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop

Выход

Здесь я попробовал использовать расширение .png.

Скриншот от 2023-08-13 21-45-23.png 100% 27KB 1.4MB/s 00:00 Скриншот от 2023-08-13 21-55-28.png 100% 24KB 1.7MB/s 00:00 Скриншот от 2023-08-13 22-04-03.png 100% 38KB 2.1MB/s 00:00

Сохраняйте атрибуты файлов

scp -p /path/to/local/file.txt user@remotehost:/path/to/destination/

Здесь флаг ‘-p’ сохраняет время модификации, время доступа и режимы исходного файла при копировании.

Пример

scp -p /home/vboxuser/Desktop/sample.zip abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop

Выход

sample.zip 100% 20KB 420.0KB/s 00:00

Укажите другой порт SSH

scp -P 22 /path/to/local/file.txt user@remotehost:/path/to/destination/

Флаг ‘-P’ указывает другой порт SSH (в данном случае 22) для SCP-соединения. Вы можете использовать любой порт по своему усмотрению.

Пример

scp -P 22 /home/vboxuser/Desktop/sample.zip abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop

Выход

sample.zip 100% 20 КБ 1,2 МБ/с 00:00

Копирование со сжатием

scp -C /path/to/local/file.txt user@remotehost:/path/to/destination/

Этот флаг ‘-C’ включает сжатие во время передачи, что потенциально уменьшает размер передаваемых данных. Адреса источника и назначения такие же, как описано ранее.

Пример

scp -C /home/vboxuser/Desktop/sample.zip abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop

Выход

sample.zip 100% 20KB 985.8KB/s 00:00

Подробный вывод для отладки

scp -v /path/to/local/file.txt user@remotehost:/path/to/destination/

Опция ‘-v’ активирует вывод подробной информации, которая предоставляет более подробную информацию в процессе передачи.

Пример

scp -v /home/vboxuser/Desktop/sample.zip abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop

Выход

Пример вывода будет выглядеть следующим образом.

Выполнение: программа /usr/bin/ssh хост 192.168.29.70, пользователь abhishekvarma, команда scp -v -t /Users/abhishekvarma/Desktop OpenSSH_8.9p1 Ubuntu-3ubuntu0.3, OpenSSL 3.0.2 15 Mar 2022 debug1: Чтение данных конфигурации /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files debug1: /etc/ssh/ssh_config line 21: Applying options for * debug1: Connecting to 192.168.29.70 [192.168.29.70] port 22. debug1: Connection established. debug1: identity file /root/.ssh/id_rsa type -1 debug1: identity file /root/.ssh/id_rsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa type -1 debug1: identity file /root/.ssh/id_ecdsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa_sk type -1 debug1: identity file /root/.ssh/id_ecdsa_sk-cert type -1

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

scp -v user@remotehost:/path/to/remote/file.txt /path/to/local/destination/

Те же объяснения, что и в предыдущем примере, только роли локальных и удаленных мест поменялись местами.

Пример

scp -v abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop

Выход

Результат будет выглядеть следующим образом.

Выполнение: программа /usr/bin/ssh хост 192.168.29.70, пользователь abhishekvarma, команда scp -v -f /Users/abhishekvarma/Desktop/sample.zip OpenSSH_8.9p1 Ubuntu-3ubuntu0.3, OpenSSL 3.0.2 15 Mar 2022 debug1: /etc/ssh/ssh_config строка 19: include /etc/ssh/ssh_config.d/*.conf matched no files debug1: Чтение данных конфигурации /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 21: Applying options for * debug1: Connecting to 192.168.29.70 [192.168.29.70] port 22. debug1: Connection established. debug1: identity file /root/.ssh/id_rsa type -1 debug1: identity file /root/.ssh/id_rsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa type -1 debug1: identity file /root/.ssh/id_ecdsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa_sk type -1 debug1: identity file /root/.ssh/id_ecdsa_sk-cert type -1

Копирование с использованием другого ключа SSH


scp -i /path/to/private_key.pem /path/to/local/file.txt user@remotehost:/path/to/destination/

Флаг “-i /path/to/private_key.pem” задает другой закрытый ключ SSH для аутентификации.

Пример

scp -i /path/to/private_key.pem /home/vboxuser/Desktop/sample.zip abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop

Выход

Если у вас есть закрытый ключ, то вы можете использовать его, а можете использовать ключ по умолчанию.

sample.zip 100% 20 КБ 1,1 МБ/с 00:00

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

scp file1.txt file2.txt user@remotehost:/path/to/destination/

Эта команда копирует файлы file1.txt и file2.txt из локального каталога в указанный пункт назначения на удаленном сервере.

Пример

scp /home/vboxuser/Desktop/image.png /home/vboxuser/Desktop/sample.zip abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop 

Выход

image.png 100% 39 КБ 1,4 МБ/с 00:00 sample.zip 100% 20 КБ 1,5 МБ/с 00:00

Копирование удаленного файла с другим именем

scp user@remotehost:/path/to/remote/file.txt /path/to/local/newfilename.txt

Эта команда копирует файл file.txt с удаленного сервера в локальный каталог, переименовывая его в newfilename.txt.

Пример

scp abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop/newfile.zip

Выход

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

sample.zip 100% 20 КБ 28,7 КБ/с 00:00

Копирование с определенным ограничением пропускной способности

scp -l 1000 /path/to/local/file.txt user@remotehost:/path/to/destination/

Флаг ‘-l’ задает ограничение пропускной способности в Кбит/с (в данном случае 1000 Кбит/с) для передачи данных.

Пример

scp -l 300 /home/vboxuser/Desktop/sample.zip abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop

Выход

sample.zip 100% 20 КБ 31,3 КБ/с 00:00

scp -rp /path/to/local/source/ user@remotehost:/path/to/destination/

Флаг ‘-p’ сохраняет атрибуты файлов, а флаг -r рекурсивно копирует каталоги. Эта команда также сохраняет символические ссылки во время копирования.

Пример

scp -rp /home/vboxuser/Desktop/image.png abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop

Выход

image.png 100% 39 КБ 1,8 МБ/с 00:00

Сжатое копирование файлов

scp -vC /path/to/local/file.txt user@remotehost:/path/to/destination/

Эта команда сочетает в себе как вывод подробной информации (-v), так и сжатие (-C) во время передачи файла.

Пример

scp -vC /home/vboxuser/Desktop/image.png abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop

Выход

Результат будет выглядеть следующим образом.

scp: debug1: fd 3 очистка O_NONBLOCK Отправка режимов файла: C0664 40050 image.png Sink: C0664 40050 image.png image.png d 6 clearing O_NONBLOCK scp: debug1: fd - clearing O_NONBLOCK image.png debug1: client_input_channel_req: channel type exit-status reply debug1: channel 0: free: client-session, channels 1 Transferred: sent 40220, received 2576 bytes, in 0.1 seconds Bytes per second: sent 352570.0, received 22581.3 root@ubuntu: ~ debug1: Exit status 0 debug1: compress outgoing: raw data 40287, compressed 38198, factor 0.95 debug1: compress incoming: raw data 792, compressed 757, factor 0.96 

Копирование между двумя удаленными серверами

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

scp user1@remotehost1:/path/to/remote/file.txt user2@remotehost2:/path/to/destination/

Эта команда напрямую передает файл file.txt с remotehost1 на remotehost2.

Пример

scp user1@remotehost1:/path/to/remote/file.txt abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop

Выход

file.txt 100% 512 КБ 512,0 КБ/с 00:00

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

ssh: подключение к хосту source.example.com порт 22: Connection refused lost connection

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

Заключение

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

clickfraud, ООО “ИНТЕРНЕТ ЗАЩИТА”, ИНН 7806602123, ОГРН 1227800111769, info@clickfraud.ru
Просмотров: 0