Как безопасно перенести файлы с удаленного сервера на локальный компьютер с помощью команды SCP в Linux?
07:43, 10.10.2023
При управлении сервером с персонального компьютера часто возникает необходимость переноса файлов между обеими машинами. С одной стороны, это может представлять определенную сложность для начинающих пользователей, поскольку нельзя просто перетащить файлы с сервера на ПК. С другой стороны, для этого существуют различные способы, и освоение одного из них в большинстве случаев решит ваши проблемы.
Сегодня мы рассмотрим один из них, а именно команду SCP в Linux.
Декодирование команд SCP: Руководство
SCP расшифровывается как Secure Copy Protocol (протокол безопасного копирования). Это команда, обеспечивающая безопасный способ копирования файлов между удаленным сервером и локальной машиной по протоколу SSH (Secure Shell), в отличие от более простой команды cp (copy). Это позволяет не только безопасно передавать информацию, но и быть уверенным в том, что никто не сможет перехватить конфиденциальные данные.
Демистификация синтаксиса SCP
Как и многие другие команды, SCP - это не одна команда для выполнения одного действия. Вместо этого в синтаксис SCP входит целый набор команд, позволяющих выполнять различные операции, связанные с передачей файлов.
Основная структура синтаксиса SCP выглядит следующим образом:
scp [OPTIONS] [[user@]src_host:]file1 [[user@]dest_host:]file2
"src_host" - это файл или каталог, который вы хотите передать, "dest_host" обозначает место, куда вы хотите передать содержимое. Оба элемента могут быть как локальными, так и удаленными, т.е. SCP поддерживает двунаправленную передачу.
"Options" обозначает различные разрешения, которые вы можете предоставить своей команде. Среди них:
- P (заглавная) - выбрать порт для подключения удаленного сервера.
- p (маленькая) - добавить информацию о моменте времени для облегчения поиска операции в дальнейшем.
- r - передать всю указанную директорию.
- q - добавьте, если не хотите получать никаких уведомлений о завершении процедуры переноса.
- C - сжимать информацию при копировании.
На самом деле, команда SCP достаточно универсальна. Помимо пересылки файлов с удаленного узла на локальный, она может использоваться и в обратном направлении, а также для обмена файлами между двумя удаленными узлами.
Прежде чем углубляться в конкретные случаи использования команды SCP, необходимо проверить два условия:
- На каждом устройстве должен присутствовать SSH.
- Также необходимо иметь root-доступ к каждому устройству.
Обзор основных команд SCP
Перемещение файлов с локального хоста на удаленный сервер
Сначала рассмотрим, как переслать файл или каталог с локального хоста на удаленный сервер.
Примените: scp /path/to/local/file username@remote_ip:/path/to/destination.
"/path/to/local/file" означает путь к передаваемым файлам, "username" - имя пользователя удаленного сервера, "remote_ip" должен содержать адрес удаленного сервера. "path/to/destination" - желаемое местоположение на удаленном сервере.
Совет: Вместо того чтобы каждый раз набирать весь домашний каталог, можно просто ввести знак ~ (tilda) в качестве адресата.
Кроме того, эту же команду можно использовать для копирования нескольких файлов. Например, можно скопировать все файлы из одного каталога, имеющие общее расширение. Для этого вместо файла укажите *.[расширение файла]. Например, чтобы скопировать все файлы .txt, введите *.txt.
scp /path/to/local/.txt username@remote_ip:/path/to/destination*
Можно также сохранить файл под другим именем, добавив нужное имя после пункта назначения.
scp /path/to/local/painauchocolat.txt username@remote_ip:/path/to/destination/croissant.txt
В приведенном примере файл "painauchocolat.txt" будет сохранен как "croissant.txt".
Передача файлов с удаленного сервера на локальный
Аналогично строится соответствующая команда для передачи файлов с удаленного сервера на локальную машину:
scp username@remote_ip:/path/to/remote/file /path/to/local/destination
Замените имя пользователя, "remote_ip", "/path/to/remote/file" и "/path/to/local/destination", как это было в предыдущих случаях.
Совет: Если файлы находятся в домашнем каталоге, то указывать путь не нужно. Просто введите имя файла, и его местоположение, а также место назначения будут установлены как домашний каталог.
scp username@192.168.137.59:painauchocolat.txt
С помощью этой команды вы можете переслать файл painauchocolat.txt из домашнего каталога удаленного сервера в домашний каталог вашего локального компьютера.
Копирование файлов между удаленными хостами
Протокол SCP хорош тем, что он позволяет не только копировать файлы между локальным и удаленным хостом, но и осуществлять обмен файлами между двумя удаленными серверами. Для этого используйте следующий синтаксис:
scp username@remote_ip1:/path/to/source/file username@remote_ip2:/path/to/destination
Замените имена пользователей, remote_ip1, remote_ip2, /path/to/source/file и /path/to/destination соответственно.
Следует помнить, что это не обязательно должен быть идентичный пользователь. Вы можете передавать файлы от одной учетной записи пользователя к другой, указав соответствующие имена пользователей.
Управление передачей нескольких файлов
С помощью SCP можно также передавать группы файлов и целые каталоги. Для передачи каталогов к команде SCP необходимо добавить флаг -r:
scp -r /path/to/local/directory username@remote_ip:/path/to/destination
Если необходимо скопировать отдельные файлы из каталога, достаточно указать несколько имен файлов по пути к источнику. Например:
scp /path/to/local/file1 file2 file3 file_andsoon username@remote_ip:/path/to/destination
Важные выводы
Разрешения: Убедитесь, что у вас есть необходимые разрешения для передачи файлов. Это должно быть разрешение на чтение для исходных файлов и разрешение на запись для конечного каталога.
SSH: Поскольку в SCP задействован SSH, вам потребуется соответствующий пароль.
Файлы с одинаковыми именами: Убедитесь, что в целевом каталоге нет файлов, имена которых совпадают с именами копируемых файлов, если вы не хотите, чтобы SCP заменил их, не спрашивая вас.
Двоеточие: Не забывайте ставить знак двоеточия (:) между исходным и целевым адресами.
Домашнее направление: Если вы передаете файлы в или из домашнего направления, то его можно не указывать и сразу набирать имена файлов.
В заключение
Передача файлов - это обычная процедура, которую вам, скорее всего, придется выполнять в тот или иной момент времени при работе с удаленными серверами. SCP - это один из распространенных способов передачи, достаточно удобный и в то же время безопасный. Мы надеемся, что приведенная выше статья разъяснила синтаксис этих функций, и у вас не возникнет никаких проблем при передаче файлов. Будьте внимательны!