Введение
SCP (защищенное копирование) — это утилита командной строки, которая позволяет безопасно копировать файлы и каталоги между двумя местоположениями.
С помощью scp
вы можете скопировать файл или каталог:
- От вашей локальной системы к удаленной системе.
- От удаленной системы к вашей локальной системе.
- Между двумя удаленными от локальной системы системами.
При передаче данных с помощью scp
и файлы, и пароль шифруются.
В этом руководстве мы покажем вам, как использовать команду scp
, на практических примерах и подробных объяснениях наиболее распространенных параметров scp.
Синтаксис команды SCP
Прежде чем мы перейдем к тому, как использовать команду scp
, давайте начнем с изучения основного синтаксиса.
Синтаксис команды scp
имеет следующий вид:
scp [OPTION] [user@]SRC_HOST:]file1 [user@]DEST_HOST:]file2
OPTION
— такие параметры, как шифрование, конфигурация ssh, порт ssh, лимит, рекурсивная копия и т. д.[user@]SRC_HOST:]file1
— Исходный файл.[user@]DEST_HOST:]file2
— файл назначения.
Локальные файлы должны указываться с использованием абсолютного или относительного пути, а имена удаленных файлов должны включать спецификацию пользователя и хоста.
scp
предоставляет ряд опций, которые управляют каждым аспектом его поведения. Наиболее часто используемые варианты:
-P
Указывает ssh-порт удаленного хоста.-p
Сохранить изменение файла и время доступа.-q
Используйте эту опцию, если вы хотите подавить индикатор состояния и сообщения, не являющиеся ошибками.-C
Этот параметр заставитscp
сжимать данные при их отправке на целевой компьютер.-r
Эта опция позволитscp
рекурсивно копировать каталоги.
Предпосылки
Команда scp
использует передачу данных ssh
, поэтому для аутентификации в удаленных системах требуется ключ ssh или пароль.
Двоеточие :
различайте локальные и удаленные хосты.
Чтобы иметь возможность копировать файлы, у вас должно быть как минимум разрешение на чтение исходного файла и разрешение на запись в целевой системе.
Будьте осторожны при копировании файлов с одинаковым именем и путем в обеих системах, scp
перезаписывает файлы без предупреждения.
При передаче больших файлов рекомендуется запускать команду scp
с помощью экрана или в сеансе tmux.
Скопируйте локальный файл в удаленную систему
Чтобы скопировать файл из локальной системы в удаленную, выполните следующую команду:
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
Скопируйте удаленный файл в локальную систему
Чтобы скопировать файл из удаленной системы в локальную систему, используйте удаленное расположение в качестве источника и локальное расположение в качестве места назначения.
Например, чтобы скопировать файл с именем file.txt
с удаленного сервера с IP-адресом 10.10.0.2
, выполните следующую команду:
scp [email protected]:/remote/file.txt /local/directory
Если вы не настроили SSH-доступ без пароля к удаленному компьютеру, вам будет предложено ввести пароль пользователя.
Скопируйте файл между двумя удаленными системами
В отличие от 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 без ввода пароля.