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 file.txt remote_username@10.10.0.2:/remote/directory

Где file.txtимя файла, который мы хотим скопировать, remote_usernameэто пользователь на удаленном сервере, 10.10.0.2это IP-адрес сервера. Это /remote/directoryпуть к каталогу, в который вы хотите скопировать файл. Если вы не укажете удаленный каталог, файл будет скопирован в домашний каталог удаленного пользователя.

Вам будет предложено ввести пароль пользователя, и начнется процесс передачи.

remote_username@10.10.0.2's password:
file.txt                             100%    0     0.0KB/s   00:00

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

scp file.txt remote_username@10.10.0.2:/remote/directory/newfilename.txt

Если SSH на удаленном хосте прослушивает порт, отличный от 22 по умолчанию, вы можете указать порт, используя -Pаргумент:

scp -P 2322 file.txt remote_username@10.10.0.2:/remote/directory

Команда копирования каталога очень похожа на команду копирования файлов. Единственная разница в том, что вам нужно использовать -rфлаг для рекурсии.

Чтобы скопировать каталог из локальной системы в удаленную, используйте -rопцию:

scp -r /local/directory remote_username@10.10.0.2:/remote/directory

Скопируйте удаленный файл в локальную систему с помощью scpкоманды

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

Например, чтобы скопировать файл с именем file.txtс удаленного сервера с IP -адресом 10.10.0.2, выполните следующую команду:

scp remote_username@10.10.0.2:/remote/file.txt /local/directory

Если вы не настроили SSH-вход без пароля на удаленный компьютер, вам будет предложено ввести пароль пользователя.

Скопируйте файл между двумя удаленными системами с помощью scpкоманды

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

Следующая команда скопирует файл /files/file.txtс удаленного хоста host1.comв каталог /filesна удаленном хосте host2.com.

scp user1@host1.com:/files/file.txt user2@host2.com:/files

Вам будет предложено ввести пароли для обеих удаленных учетных записей. Данные будут передаваться напрямую с одного удаленного хоста на другой.

Чтобы направить трафик через машину, на которой выдается команда, используйте -3опцию:

scp -3 user1@host1.com:/files/file.txt user2@host2.com:/files