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

Название scp образовано от secure cp (copy). При помощи этой утилиты вы можете копировать файлы по протоколу ssh. Этот протокол поддерживает шифрование, поэтому использование scp безопасный способ копирования файлов.

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

scp доступна для Linux, Mac и Windows (WinSCP)
Описание SCP и основных параметров

scp [[user@]from-host:]source-file [[user@]to-host:][destination-file]

from-host – имя или IP адрес хоста, на котором находится файл (хост источник). Может быть пропущено если хостом является локальный копьютер, на котором исполняется эта команда.

user – пользователь у которого есть права для доступа к файлу и директории, которые будут скопированы с хоста-источника. Или пользователь, у которого есть права на запись на хосте-назначения.

source-file – файл или файлы, которые будут скопированы из хоста-источника на хост-назначения. Это может быть и директория, для этого нужно указать ключ -r при копировании, для копирования содержимого директории.

destination-file – имя, которое получит файл при копировании на хосте-назначения. Если параметр не указан все файлы будут скопированы с исходыми именами.
SCP ключи

-p – сохранить время измения, время доступа и права исходного файла на хосте-назначения

-q – не отображать статус выполнения

-r – рекурсивно копировать содержимое директории, если в файле-источнике указана директория

-v – показывать сообщения отладки

-P – нестандартный порт SSH на хосте
Примеры SCP

$ scp *.txt user@remote.server.com:/home/user/

скопируются все файлы с расширением .txt в папку /home/use на удаленный хост remote.server.com

$ scp -r user@192.168.0.2:/home/user/ user@192.168.0.3:/home/user/

скопируются все файлы из домашнего каталога user на хосте 192.168.0.2 в домашний каталог user на хост 192.168.0.3 рекурсивно

В ssh возможно три варианта копирования файлов:

С локального хоста на удаленный:

$ scp somefile username@server:/home/username/

С удаленного хоста на локальный:

$ scp username@server:/home/username/file_name /home/local-username/file-name

С удаленного хоста на другой хост:

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

$ scp user_name1@server1:/home/user_name1/file_name user_name2@server2:/home/user_name2/

SCP трюки

Ограничение скорости передачи

scp -l limit username@server:/home/uername/* .

limit указывается в Кбит/с.

Увеличить скорость передачи

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

Измение алгоритма шифрования с AES-128 на Blowfish

$ scp -c blowfish user@server:/home/user/file .

Использование алгоритма шифрования RC4, который является самым быстрым из возможных

$ scp -c arcfour user@server:/home/user/file .

Увеличение скорости в этом случае будет за счет меньшей безопасности.

$ scp -c 3des user@server:/home/user/file .

Это самый медленный алгоритм шифрования, но он более безопасный.
Финальные заметки

Очень важно понимать, что scp шифрует данные перед передачей их через сеть интернет. Для копирования файлов также можно использовать ftp или rcp.

В Windows scp называется WinSCP. Для Mac OS X scp доступно по-умолчанию, также как и для Linux.

Блог Синявского