SCP (secure copy) — это утилита командной строки, которая позволяет безопасно копировать файлы и каталоги между двумя местоположениями.
С помощью scp вы можете скопировать файл или каталог:
- Из вашей локальной системы в удаленную.
- Из удаленной системы в вашу локальную.
- Между двумя удаленными системами из вашей локальной системы.
При передаче данных с помощью scp и файлы, и пароль шифруются, поэтому любой, кто отслеживает трафик, не получает ничего конфиденциального.
В этом руководстве мы покажем вам, как использовать команду scp на практических примерах и подробных объяснениях наиболее распространенных параметров scp.
Содержание
Синтаксис команды SCP
Прежде чем перейти к использованию команды scp , давайте начнем с обзора основного синтаксиса.
Синтаксис команды scp имеет следующий вид:
scp [OPTION] [user@]SRC_HOST:]file1 [user@]DEST_HOST:]file2
OPTION— параметры scp, такие как шифр, конфигурация ssh, порт ssh, ограничение, рекурсивное копирование и т. Д.-
[user@]SRC_HOST:]file1— Исходный файл. -
[user@]DEST_HOST:]file2— Файл назначения
Локальные файлы следует указывать с использованием абсолютного или относительного пути, в то время как имена удаленных файлов должны включать спецификацию пользователя и хоста.
scp предоставляет ряд параметров, которые контролируют каждый аспект его поведения. Наиболее широко используемые варианты:
-P— указывает ssh-порт удаленного хоста.-
-p— сохраняет время изменения и доступа к файлам. -
-q— используйте эту опцию, если вы хотите отключить индикатор выполнения и сообщения, не связанные с ошибками. -
-C— этот параметр заставляетscpсжимать данные при их отправке на конечный компьютер. -
-r— этот параметр указываетscpрекурсивно копировать каталоги.
Подготовка
Команда scp использует ssh для передачи данных, поэтому для аутентификации в удаленных системах требуется ключ ssh или пароль.
Двоеточие ( : ), как scp различия между локальными и удаленными участками.
Чтобы иметь возможность копировать файлы, у вас должны быть как минимум права на чтение исходного файла и разрешение на запись в целевой системе.
Будьте осторожны при копировании файлов с одинаковым именем и расположением в обеих системах, scp перезапишет файлы без предупреждения.
При передаче больших файлов рекомендуется запускать команду scp внутри сеанса screen или tmux .
Копирование файлов и каталогов между двумя системами с помощью scp
Скопируйте локальный файл в удаленную систему с помощью команды scp
Чтобы скопировать файл из локальной в удаленную систему, выполните следующую команду:
scp file.txt [email protected]:/remote/directory
Где file.txt — это имя файла, который мы хотим скопировать, remote_username — это пользователь на удаленном сервере, 10.10.0.2 — это IP-адрес сервера. /remote/directory — это путь к каталогу, в который вы хотите скопировать файл. Если вы не укажете удаленный каталог, файл будет скопирован в домашний каталог удаленного пользователя.
Вам будет предложено ввести пароль пользователя, и начнется процесс передачи.
[email protected]'s password:
file.txt 100% 0 0.0KB/s 00:00
Если не указывать имя файла в месте назначения, файл копируется с исходным именем. Если вы хотите сохранить файл под другим именем, вам необходимо указать новое имя файла:
scp file.txt [email protected]:/remote/directory/newfilename.txt
Если SSH на удаленном хосте прослушивает порт, отличный от порта по умолчанию 22, вы можете указать порт с помощью аргумента -P :
scp -P 2322 file.txt [email protected]:/remote/directory
Команда для копирования каталога очень похожа на копирование файлов. Единственная разница в том, что вам нужно использовать флаг -r для рекурсии.
Чтобы скопировать каталог из локальной в удаленную систему, используйте параметр -r :
scp -r /local/directory [email protected]:/remote/directory
Скопируйте удаленный файл в локальную систему с помощью команды scp
Чтобы скопировать файл с удаленного компьютера в локальную систему, используйте удаленное расположение в качестве источника и локальное расположение в качестве пункта назначения.
Например, чтобы скопировать файл с именем file.txt с удаленного сервера с IP 10.10.0.2 выполните следующую команду:
scp [email protected]:/remote/file.txt /local/directory
Если вы не установили SSH-вход без пароля для удаленного компьютера, вам будет предложено ввести пароль пользователя.
Скопируйте файл между двумя удаленными системами с помощью команды scp
В отличие от rsync , при использовании scp вам не нужно входить на один из серверов для передачи файлов с одного на другой удаленный компьютер.
Следующая команда скопирует файл /files/file.txt с удаленного хоста host1.com в каталог /files на удаленном хосте host2.com .
scp [email protected]:/files/file.txt [email protected]:/files
Вам будет предложено ввести пароли для обеих удаленных учетных записей. Данные будут передаваться напрямую с одного удаленного хоста на другой.
Чтобы направить трафик через машину, на которой выдается команда, используйте параметр -3 :
scp -3 [email protected]:/files/file.txt [email protected]:/files
Выводы
В этом руководстве вы узнали, как использовать команду scp для копирования файлов и каталогов.
Вы также можете настроить аутентификацию на основе ключа SSH и подключаться к своим серверам Linux без ввода пароля.
Если вы регулярно подключаетесь к одним и тем же системам, вы можете упростить рабочий процесс, указав все свои подключения в файле конфигурации SSH .