SCP Команда Linux для Удалённого Копирования Файлов

Безопасная передача файлов является приоритетом номер один для тех, кто используют VPS. SCP команда Linux позволяет выполнить безопасное копирование и перенос ваших файлов. И в этой статье мы расскажем, как это сделать.

Что такое команда SCP? Основанная на протоколе удаленного копирования (RCP) Berkeley Software Distribution (BSD), SCP (Secure Copy) представляет собой сетевой протокол передачи файлов, который позволяет легко и безопасно передавать/копировать файлы между удалённым и локальным хостом или двумя удалёнными местоположениями.

Full Stack-разработчики часто применяют эту команду Linux через её функции аутентификации и шифрования, а также  отсутствие необходимости использовать сторонние хостинговые сервисы, такие как Github. SCP — это простой способ защитить данные от перехватчиков и сохранить их конфиденциальность.

По сути, SCP представляет собой смесь RCP и SSH (Secure Shell). Первый протокол обеспечивает выполнение операций копирования, а второй шифрует информацию и проверяет подлинность удалённых систем.

В отличие от Rsync, всё, что вам нужно для успешного использования командной строки SCP, это имя пользователя и пароль или секретная фраза для систем, участвующих в передаче. Это упрощает процесс, так как вам не нужно входить ни в одну из них.

Прокачайте ваш проект, воспользовавшись скидками на VPS-хостинг в Hostinger! Большой выбор планов, как для учебных, так и для крупных коммерческих проектов.

К предложению

Синтаксис Примера SCP Команды

Пример базовой команды SCP выглядит следующим образом:

scp [other options] [source username@IP]:/[directory and file name] [destination username@IP]:/[destination directory]

Слишком сложно? Давайте разбираться. 

В этом примере мы выполняем передачу между двумя серверами VPS.

  • [other options] — это модификаторы, которые вы можете добавить к команде SCP. Мы рассмотрим самые популярные из них немного позже.
  • [source username@IP] — имя пользователя и IP-адрес компьютера, на котором находится нужный файл. На практике это будет выглядеть как-то так — root@123.123.123.12.
  • :/ сообщает команде SCP, что вы собираетесь ввести исходный каталог.
  • [directory and file name] — это место, где находится файл, и его название. На деле это выглядит так: /users/Olha/Desktop/SCP.png.
  • [destination username@IP] — это имя пользователя и IP-адрес компьютера назначения.
  • [destination directory] — каталог назначения, в который будет сохранён файл.

В реальном жизни SCP команда будет выглядеть так:

scp -p root@162.168.1.1:/media/scp.png olha@162.168.1.2:/desktop/destination

Видите, это довольно просто. Если вы копируете на локальный компьютер или с локального компьютера, вам не понадобится IP-адрес, место назначения или исходный путь, например, /desktop/folder_name.

Давайте поговорим о других опциях модификации этой утилиты. Существует 20 распространённых вариантов, которые можно использовать как в односимвольной форме (-o), так и в их описательном эквиваленте (–option). Вот список популярных модификаторов команды SCP в Linux:

  • –P (port) позволяет указать нестандартный порт (порт по умолчанию — 22).
  • –с (cipher) даёт возможность указать алгоритм шифрования, который будет использовать клиент. Некоторые из значений, которые вы можете использовать: “aes256-ctr”, “aes256-cbc”, “blowfish-cbc”, “arcfour”, “arcfour128”, “arcfour256”, “cast128-cbc”, “aes128-ctr”, “aes128-cbc”, “aes192-ctr”, “aes192-cbc” и “3des-cbc”. Параметром по умолчанию в конфигурации оболочки является “AnyStdCipher”.
  • –q выполнит операцию в тихом режиме, это означает, что отображаться будут только критические ошибки.
  • –r для рекурсивного копирования, которое будет включать все подкаталоги.
  • -4 или -6, если вы хотите выбрать используемую версию протокола: IPv4 или IPv6. Вы также можете более подробно настроить требования к IP-адресу с помощью ключевого слова address-family.
  • –p сохранит начальное время изменения и атрибуты файла.
  • –u удалит исходный файл после завершения передачи.
  • –c включит сжатие данных во время операции передачи.

SCP Команда: На Что Обратить Внимание

Поскольку SCP использует шифрование SSH, для копирования файла вам потребуется пароль ssh. Кроме того, необходимо иметь право на чтение на машине, с которой вы собираетесь копировать, и право на запись на машине(ах), куда вы будете копировать.

Для аутентификации и настройки соединения вам нужно будет создать пару ключей ssh с помощью следующей команды:

ssh-keygen -t rsa

Вы копируете этот ключ в удалённую систему, используя:

ssh-copy-id user@remote_machine

Открытый ключ будет скопирован сразу после аутентификации на удалённом(ых) компьютере(ах), после чего вы сможете выполнить перенос.

Если вы не помните пароль(и) root для какой-либо из систем, вы можете попросить клиента ssh выбрать файл, из которого закрытый идентификационный ключ для подтверждения RSA будет считываться автоматически.

Для протокола версии 2 дефолтный путь идентификации ключа хоста — ~/.ssh/id_dsa, а для версии протокола 1 — ~/.ssh/id_rsa. Затем нужно выяснить, где хранятся резервные копии закрытых и открытых ключей, чтобы вы могли применить команду ssh для их автоматического использования. 

Для пути /back-up/home/jack/.ssh команда выглядит следующим образом:

ssh -i /back-up/home/user/.ssh/id_dsa user@yourserver.servername.domain

Совет: значением по умолчанию этого параметра является –overwrite [yes], поэтому, если вы не укажете опцию –overwrite no или –overwrite ask в своей команде scp, операция перезапишет файлы с одинаковыми названиями и местоположениями без каких-либо предупреждений.

Если вы копируете большие файлы, мы рекомендуем использовать сеанс tmux или запустить команду на другом экране. Кроме того, вы также должны использовать опцию -v. Это заставит scp отображать любые отладочные соединения, проблемы с аутентификацией или конфигурацией.

SCP Команда и Копирование Файлов

Самое замечательное в SCP то, что она даёт вам возможность передавать файлы между двумя хостами или между хостом и локальной машиной. Давайте посмотрим, как используется эта команда для каждого типа передачи.

Локальный Файл в Удалённое Местоположение

Мы скопируем локальный файл scp.zip на пользователя удалённого компьютера с названием root. За именем пользователя следует IP-адрес сервера.

Пример:

scp /users/Olha/desktop/scp.zip root@191.162.0.2:/writing/article

Если у вас не настроено автоматическое подтверждение клиента ssh, вам будет предложено ввести пароль от пользователя удалённого компьютера, после чего вы увидите индикатор прогресса. Это будет выглядеть примерно так:

root@191.162.0.2’s password:
novel3.zip   100% 0 0.0KB/s 00:00

Но допустим, что удалённый компьютер настроен на прослушивание SSH-соединений через порт, отличный от порта по умолчанию 22. В этом случае вы должны указать этот порт с помощью параметра.

scp -P 2322 /users/Olha/desktop/scp.zip root@191.162.0.2:/writing/article

Если вы также хотите изменить имя файла во время копирования, то ваша команда будет выглядеть следующим образом (если ваш порт не является портом по умолчанию, просто добавьте –P и номер порта):

scp /users/Olha/desktop/scp.zip root@191.162.0.2:/writing/article/howtoscp.zip

Если вы хотите скопировать каталог, содержащий файлы и/или подкаталоги, используйте параметр –r, описанный выше.

scp -r /users/Olha/desktop root@191.162.0.2:/writing/article

Удалённый Файл на Локальную Машину

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

scp root@191.162.0.2:/writing/articles/SCP.zip Users/Olha/Desktop

Опять же, это должно вызвать тот же вывод входа в систему через SSH, где вы должны ввести пароль, если аутентификация не была отключена привилегиями sudo или вы не заставили ssh-клиент использовать закрытый ключ на вашем компьютере.

Удалённый Файл в Другое Удалённое Местоположение

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

Пример:

scp root@191.162.0.2:/writing/article/scp.zip olha@11.10.0.1:/publishing

Приведённая выше команда копирует исходный файл /writing/article/scp.zip с одного хоста на другой. Чтобы скопировать папки, просто добавьте параметр -r и укажите путь к папке, а не файл внутри неё, как мы делали раньше.

При нормальных обстоятельствах файл копируется непосредственно с одного удалённого хоста на другой. Однако, если вы хотите перенаправить операцию через ваш компьютер, вы можете добавить опцию -3:

scp -3 root@191.162.0.2:/writing/article/scp.zip olha@11.10.0.1:/publishing

Вот и всё!

Итоги

В этой статье мы узнали, что такое SCP команда в Linux и, как с её помощью передавать файлы между удалёнными и локальными узлами. Это очень полезно, когда вы работаете с несколькими серверами. Протокол защищённого копирования, или SCP облегчает копирование информации с одного удалённого хоста на другой, поскольку вам не приходится входить в систему.  

Кроме того, этот метод удалённой передачи файлов шифрует ваши данные с помощью безопасной оболочки (SSH), что обеспечивает конфиденциальность передаваемой вами информации.

Author
Автор

Olha L.

Ольга вже близько восьми років працює менеджером у сфері IT, три з яких вона займається SEO. Написання технічних завдань та інструкцій — один з її основних обов'язків. Її хобі — дізнаватися щось нове і створювати цікаві та корисні статті про сучасні технології, веброзробку, мови програмування, пошукову оптимізацію сайтів та багато іншого.