SCP (безопасное копирование) - это утилита командной строки, позволяющая безопасно копировать файлы и каталоги между двумя местами.
С помощью scp вы можете скопировать файл или каталог:
- Из вашей локальной системы в удаленную систему.
- С удаленной системы на вашу локальную систему.
- Между двумя удаленными системами из вашей локальной системы.
При передаче данных с помощью scp файлы и пароль шифруются, чтобы никто, подглядывающий за трафиком, не получил ничего конфиденциального.
В этом учебнике мы покажем вам, как использовать команду scp на практических примерах и подробных объяснениях наиболее распространенных опций scp.
Синтаксис команды SCP
Прежде чем перейти к использованию команды scp, давайте начнем с рассмотрения основного синтаксиса.
Синтаксис команды scp имеет следующий вид:
1 | 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
Чтобы скопировать файл с локальной системы на удаленную, выполните следующую команду:
1 | scp file.txt remote_username@10.10.0.2:/remote/directory |
Где file.txt - имя файла, который мы хотим скопировать, remote_username - пользователь на удаленном сервере, 10.10.0.2 - IP-адрес сервера. /remote/directory - это путь к директории, в которую вы хотите скопировать файл. Если вы не укажете удаленный каталог, файл будет скопирован в домашний каталог удаленного пользователя.
Вам будет предложено ввести пароль пользователя, после чего начнется процесс передачи.
Если опустить имя файла в месте назначения, файл будет скопирован с оригинальным именем. Если вы хотите сохранить файл под другим именем, вам необходимо указать новое имя файла:
1 | scp file.txt remote_username@10.10.0.2:/remote/directory/newfilename.txt |
В случае если SSH на удаленном хосте прослушивает порт, отличный от 22 по умолчанию, вы можете указать порт с помощью аргумента -P:
1 | scp -P 2322 file.txt remote_username@10.10.0.2:/remote/directory |
Команда для копирования каталога аналогична команде для копирования файлов. Единственное отличие заключается в том, что для рекурсивного копирования необходимо использовать флаг -r.
Чтобы скопировать каталог с локальной системы на удаленную, используйте опцию -r:
1 | scp -r /local/directory remote_username@10.10.0.2:/remote/directory |
Копирование удаленного файла в локальную систему с помощью команды scp
Чтобы скопировать файл с удаленной системы на локальную, используйте удаленное расположение в качестве источника и локальное расположение в качестве места назначения.
Например, чтобы скопировать файл с именем file.txt с удаленного сервера с IP 10.10.0.2, выполните следующую команду:
1 | scp remote_username@10.10.0.2:/remote/file.txt /local/directory |
Если вы не установили беспарольный SSH вход на удаленную машину, вам будет предложено ввести пароль пользователя.
Копирование файла между двумя удаленными системами с помощью команды scp
В отличие от rsync, при использовании scp вам не нужно входить на один из серверов, чтобы передать файлы с одной удаленной машины на другую.
Следующая команда скопирует файл /files/file.txt с удаленного хоста host1.com в каталог /files на удаленном хосте host2.com.
1 | scp user1@host1.com:/files/file.txt user2@host2.com:/files |
Вам будет предложено ввести пароли для обеих удаленных учетных записей. Данные будут передаваться напрямую с одного удаленного узла на другой.
Чтобы направить трафик через машину, на которой выполняется команда, используйте опцию -3:
1 | scp -3 user1@host1.com:/files/file.txt user2@host2.com:/files |