SCP (secure copy) — это утилита командной строки Linux, которая позволяет безопасно копировать файлы и каталоги между двумя локациями.
С помощью 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 внутри экрана или tmux сессии в Linux.
Чтобы скопировать файл из локальной в удаленную систему, выполните следующую команду:
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/andreyex.txt
Если SSH на удаленным хосту прослушивает порт по умолчанию 22, то вы можете указать порт, используя аргумент -P
:
ssh -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
Чтобы скопировать файл из удаленной системы в локальную, используйте удаленное расположение в качестве источника и локальное расположение в качестве назначения.
Например, чтобы скопировать файл file.txt
с удаленного сервера с IP 10.10.0.2
выполните следующую команду:
scp remote_username@10.10.0.2:/remote/file.txt /local/directory
Если вы еще не установили беспарольный SSH для входа на удаленный компьютер, вам будет предложено ввести пароль пользователя.
В отличие от 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
В этой статье вы узнали, как использовать команду scp для копирования файлов и каталогов.