Как использовать SCP для передачи файлов в терминале macOS

Secure Copy – это стандарт UNIX, используемый для передачи файлов с одного компьютера на другой. Вот как использовать эту функцию в macOS используя Terminal.

До персональных компьютеров существовали мейнфреймы и Таймшерные терминалы. Пользователи входили в учетную запись с терминала на мэйнфрейме и вводили команды мэйнфрейму для обработки.

По мере становления Интернета в 1990-х годах возникла необходимость в безопасном использовании таких команд терминала в сетях и на компьютерах. В 1994 году финский программист по имени Тату Илонен создал Secure Shell.

В рамках Secure Shell была создана программа SCP (Secure copy protocol). SCP – это и протокол, и программа UNIX, которую можно запустить из командной строки. SCP позволяет передавать файлы на SSH-серверы и с SSH-серверы в обоих направлениях. SCP основан на команде RCP (Remote Copy), которая первоначально использовалась в BSD в середине 1980-х годов.

По умолчанию TCP-порт, используемый для передачи файлов SCP, равен 22 (стандартный порт SSH).

В отличие от других интернет-стандартов, для SCP не существует RFC или формального стандарта – он является частью открытого исходного кода проекта OpenSSH. Вы можете просмотреть весь исходный код OpenSSH на его GitHub.

Основное использование

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

После входа в систему на удаленном сервере для передачи файлов используется команда „scp“ с опциями в Terminal. Не существует способа получения списков каталогов с помощью scp, как и способа удаления удаленных файлов, но вы можете использовать стандартные команды файловой системы UNIX, такие как ls, чтобы получить списки каталогов после входа в систему на удаленном компьютере.

Например, в Терминале macOS для получения списка каталогов файлов на локальной машине или удаленном сервере можно выполнить команду ls, например:

ls -l

Флаг -l указывает ls перечислять файлы вертикально, в окне Терминала с подробной информацией о каждом файле/папке, такой как разрешения UNIX, владелец, группа, размер, дата и время создания файла. Если вы опустите флаг -l, команда ls выведет список только имен файлов в нескольких столбцах без подробной информации о каждом файле.

Для получения более подробной информации о команде ls введите в Terminal man ls и нажмите Enter.

Чтобы выйти из системы man-страниц в Terminal для любой man-страницы, введите Ctrl + Z и нажмите Enter.

Вы также можете использовать команду cd (change directory) для изменения каталогов в локальной или удаленной файловой системе. Просто введите cd, за которым следует пробел, и имя или путь к каталогу, в который вы хотите перейти. Все команды Терминала будут работать с этим каталогом, если только вы не повторите cd в другой каталог или не укажете полный путь в команде.

Чтобы подняться на один уровень каталогов в файловой системе с помощью cd в Терминале, вы можете набрать:

cd .../

и нажать Enter

Чтобы перейти на самый верх (корень) файловой системы, введите:

cd /

и нажмите Enter.

Вы можете попросить Terminal вывести текущий полный путь и имя каталога в любой файловой системе, введя:

pwd

и нажав Enter.

pwd – это команда UNIX для получения текущего рабочего каталога (т.е. текущего каталога, в котором работает оболочка Terminal). Для получения страницы руководства по pwd в Terminal введите:

man pwd

и нажмите Enter.

Для получения подробной информации об использовании флагов в команде:

man scp

и нажмите Enter.

Примеры scp

SCP в Terminal проста в использовании. Основной синтаксис:

scp example.txt <a href="/cdn-cgi/l/email-protection">[email protected]</a>:/directoryName/

Командуем scp скопировать локальный файл в pwd с именем «example.txt» на сервер по IP-адресу 10.10.0.1 в каталог файловой системы этого сервера с именем «directoryName» от имени пользователя «remote_user», при этом удаленный файл должен быть также назван «example.txt».

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

scp example.txt <a href="/cdn-cgi/l/email-protection">[email protected]</a>:/directoryName/newExample.txt*

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

Противоположный пример – копирование файла с удаленного сервера на ваш Mac, выглядит аналогично. Например:

scp <a href="/cdn-cgi/l/email-protection">[email protected]</a>:/directoryName/example.txt /Users/ваше имя пользователя/Desktop/

Копирует файл с именем «example.txt» в директории «directoryName» на удаленном сервере на рабочий стол вашего Mac.

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

Два флага после «scp « могут быть использованы для указания первой или второй версии протокола SSH: -1“ или -2“.

Например:

scp -2 example.txt <a href="/cdn-cgi/l/email-protection">[email protected]</a>:/directoryName/newExample.txt

Заставляем использовать вторую версию протокола для копирования файла example.txt в pwd на удаленный сервер по адресу 10.10.0.1 в каталог с именем «directoryName» с новым именем файла «newExample.txt».

Несколько других флагов, которые можно использовать в scp, чтобы изменить его поведение:

  1. -4 Использовать только адресацию IPv4
  2. -6 Использовать только адресацию IPv6
  3. -B Пакетный режим (подавляет дополнительные запросы на аутентификацию)
  4. -C Включает сжатие соединения
  5. -F Использовать альтернативный файл конфигурации ssh для соединений
  6. -i Определяет альтернативный файл закрытого ключа для соединений
  7. -l (Limit) – Устанавливает ограничение пропускной способности соединения в кб/с
  8. -O (Old) – Применять старый протокол SCP вместо нового протокола SSH SFTP при передаче данных.
  9. -o Передать дополнительные, некомандные опции ssh
  10. -P Подключиться по альтернативному номеру порта, отличному от 22
  11. -p Сохранить все метаданные локального файла в удаленном файле после копирования, включая даты и время
  12. -q (Quiet) – не отображать информацию о ходе копирования файла в Terminal
  13. -R (Remote) – принудительно использовать удаленную версию scp для копирования вместо локальной
  14. -r Рекурсивно копировать целые каталоги, а не только отдельные файлы
  15. -v (Verbose) – Выводить дополнительную информацию в Terminal для всех операций scp

Опция -O предусмотрена для использования в случаях, когда вы подключаетесь к старым SSH серверам, которые не реализуют новый SSH File Transfer Protocol (также часть SSH).

Вы можете использовать опцию -o для передачи дополнительных параметров ssh, которые недоступны в качестве опций командной строки.

scp локальные копии

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

Microsoft включает SSH в более поздние версии Windows 10, начиная с 2019 года. Для использования с более ранними версиями Windows, возможно, придется установить сторонний SSH-сервер на компьютер Windows.

Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Вдохновлен appleinsider.com

Похожие статьи

Комментарии (0)