SCP (от англ. secure copy) — утилита и протокол копирования файлов между компьютерами, использующий, в отличие от утилиты RCP, в качестве транспорта не RSH, а шифрованный SSH. Сходная по функционалу утилита — sftp.

В UNIX-подобных операционных системах одноимённая (scp) утилита удалённого копирования файлов часто входит в состав пакета openssh.


SCP

Принцип работы

Обычно клиент устанавливает SSH-соединение с удаленным хостом и запрашивает запуск процесса SCP на удаленном сервере. Удаленный процесс SCP может работать в одном из двух режимов:

  • Исходный режим, который читает файлы (обычно с диска) и отправляет их обратно клиенту;
  • Режим приемника, который принимает файлы, отправленные клиентом, и записывает их (обычно на диск) на удаленный хост.

В большинстве программ SCP режим источника обычно запускается с помощью флага -f (from), а режим приемника запускается с помощью -t (to). Эти флаги используются внутри реализации и не документируются вне исходного кода SCP.

Потенциальные ошибки

SCP не предполагает обмен текстом в оболочке входа при подключении к системе по SSH. Текст, передаваемый c профилем ssh (например, echo «Добро пожаловать» в файле .bashrc), интерпретируется как сообщение об ошибке, а пустая строка (echo «») заставляет SCP зайти в тупик, ожидая завершения сообщения об ошибке.

SCP (программа удаленного копирования файлов)

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

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

Некоторые реализации SSH включают в себя программу SCP2, которая использует протокол SFTP вместо SCP, но предоставляет тот же интерфейс командной строки, что и SCP. Как правило, является символической ссылкой на SCP2.

Синтаксис

Синтаксис команды scp схож с синтаксисом команды cp.

Команда копирования локального SourceFile на удалённый хост:

scp SourceFile user@host:/directory/TargetFile

Команда копирования SourceFile с удалённого хоста:

scp user@host:/directory/SourceFile TargetFile

Если ssh работает на другом порту, то тогда указывается:

scp -P port user@host:/directory/SourceFile /directory/TargetFile 

Копирование SourceFolder с удалённого хоста внутрь локального TargetFolder (на локальном хосте получится, что SourceFolder будет находиться внутри TargetFolder):

scp -r user@host:/directory/SourceFolder TargetFolder

Другие реализации

Поскольку протокол защищенного копирования реализует только передачу файлов, программы с протоколом SCP с графическим интерфейсом встречаются редко, поскольку для его реализации требуются дополнительные функции (как минимум, визуализация файловых директорий). Например, WinSCP по умолчанию использует протокол SFTP. Даже при работе в режиме SCP такие реализации, как WinSCP, обычно не являются чистыми программами SCP, поскольку они должны использовать другие средства для реализации дополнительных функций (например, команду ls). Это, в свою очередь, приводит к проблемам с зависимостью от платформы. Более сложными и продвинутыми инструментами для управления файлами через SSH являются программы с SFTP.

См. также

Примечания

  1. packages.ubuntu.com. Дата обращения: 21 июля 2008. Архивировано 5 апреля 2009 года.

Ссылки