Передача файлов в Linux с помощью SCP

Linux-администратор должен уверенно владеть интерфейсом командной строки, так как на большинстве Linux-серверов не устанавливается графическая оболочка. SSH является наиболее популярным протоколом, который обеспечивает администратору возможность безопасного удаленного управления сервером. Для безопасного копирования файлов между серверами с использованием этого протокола используется команда scp (secure copy – безопасное копирование). В данном руководстве мы рассмотрим основы работы с командой scp и наиболее важные опции.

Базовый синтаксис

Команда scp выглядит следующим образом

scp [опции] имя_файла пользователь@узел_назначения:директория_назначения

Данная команда выполняет копирование указанного файла (имя_файла) в конкретную директорию (директория_назначения) на узле назначения (узел_назначения) с использованием учетной записи определенного пользователя (пользователь).
Подробная информация о процессе копирования
При запуске без параметров команда scp будет копировать файлы в фоновом режиме. Пользователь ничего не видит, пока процесс не будет завершен, или не возникнет какая-либо ошибка. Для вывода подробной информации о процессе копирования на экран можно воспользоваться параметром –v. Это может помочь в отладке проблем соединения, аутентификации и конфигурации.

$ scp -v file.pdf root@10.10.10.2:.

Сохранение значений атрибутов

Для копирования файлов с сохранением времени доступа, модификации и прав доступа используется опция –p. На экране отобразятся примерное время выполнения и скорость соединения:

# scp -p file.pdf root@10.10.10.2:.
root@10.10.10.2's password: 
file.pdf                    100% 1000MB  58.0MB/s   00:17                                                                                                                                                            100% 1000MB  58.0MB/s   00:17

Сжатие файлов при передаче

Опция –C поможет ускорить передачу файлов за счет их сжатия. Преимущество такой передачи в том, что сжатие будет выполняться только для передачи по сети. При завершении копирования на сервере места назначения размер файла вернется к первоначальному, каким он был до сжатия.

Допустим, требуется скопировать файл размером 1 ГБ. Следующая команда выполнит это без сжатия:

# scp -vp file.pdf root@10.10.10.2:/tmp

Время копирования составило 20.3 секунды. Теперь выполним копирование с параметром –C:

scp -Cvp file.pdf root@10.10.10.2:/tmp

Видно, что при использовании сжатия процесс передачи требует всего 3,4 секунды. Это более чем в 6 раз быстрее. Однако, важно отметить, что сжатие работает не для всех файлов. При копировании уже сжатых файлов никакого ускорения не будет, поэтому на архивы, изображения и файлы образов этот параметр не действует.

Выбор алгоритма шифрования

По умолчанию scp использует для шифрования файлов алгоритм AES-128. Если требуется другой алгоритм, его можно изменить при помощи опции -c:

# scp -c 3des file.pdf root@10.10.10.2:/tmp 
root@10.10.10.2's password: 
file.pdf 100% 1000MB 19.0MB/s 00:52

В данном случае задан алгоритм 3DES. Обратите внимание, что данный параметр указывается маленькой буквой , а не большой -C.

Ограничение скорости передачи

Опция -l ограничивает скорость передачи, указывается в кбит/c. Она полезна для использования в скриптах для автоматического копирования большого количества файлов, чтобы процесс scp не занимал весь канал.

# scp -l 40000 file.pdf root@10.10.10.2:/tmp
root@10.10.10.2's password: 
file.pdf 100% 1000MB 4.9MB/s 03:24

После параметра указывается значение ограничения скорости в килобитах в секунду, а при передаче скорость отображается в килобайтах в секунду. В данном случае мы указали 400 кбит/с, что эквивалентно 50 кбайт/с, так как в одном байте 8 бит (400/8 = 50).
Выбор порта для scp
Обычно scp по умолчанию использует порт 22, но в целях безопасности может потребоваться его изменить. Для этого применяется опция -P. Например, если мы используем порт 2249:

# scp -P 2249 file.pdf root@10.10.10.2:/tmp

Убедитесь, что буква заглавная, так как строчная p используется для сохранения атрибутов.

Рекурсивное копирование каталогов

Если требуется копирование директории со всеми поддиректориями и файлами внутри, лучше сделать это одной командой. В scp для этого используется параметр -r:

scp -r /root/documents root@10.10.10.2:.

После завершения процесса копирования на сервере места назначения появится директория documents со всеми файлами, которая будет создана автоматически.

Отключение отображения прогресса и служебных сообщений

Если вы не хотите видеть прогресс выполнения операции, предупреждения и диагностические сообщения scp, их можно отключить параметром

# scp -q label.pdf root@10.10.10.2:.

После ввода пароля не отображается никакой информации о работе команды. После завершения процесса копирования вы снова увидите командную строку.

Копирование файлов через прокси

В офисных сетях часто используются прокси-серверы. Изначально scp не настроена для работы через прокси, поэтому если вы используете прокси-сервер, нужно «сообщить» об этом команде. Для работы протокола SSH через прокси-сервер требуется туннелирование, которое осуществляется при помощи специальной программы Corkscrew. В вашей системе она может быть не установлена, в этом случае нужно воспользоваться стандартной процедурой установки:

Ubuntu/Debian

$ apt-get install corkscrew

Centos/Redhat

# yum install corkscrew

Допустим, адрес вашего прокси-сервера 10.0.96.6, а порт 8080, и на сервере требуется аутентификация пользователя. Нужно создать файл ~/.ssh/config и прописать там следующую команду:

ProxyCommand /usr/bin/corkscrew 10.0.96.6 8080 %h %p ~/.ssh/proxyauth

Затем нужно создать файл ~/.ssh/proxyauth, содержащий имя пользователя и пароль для аутентификации на прокси-сервере в следующем формате:

имя:пароль

Теперь можно использовать scp в прозрачном режиме, как обычно. Необходимо исключить доступ посторонних лиц к файлу ~/.ssh/proxyauth, потому что в нем открытым текстом указаны имя пользователя и пароль.

Выбор другого файла конфигурации

Мобильным пользователям, которые попеременно используют сеть компании и публичные сети, будет тяжело каждый раз менять настройки scp. Лучше всего создать для этого отдельный файл ssh_config и воспользоваться параметром -F.

По умолчанию файл ssh_config для пользователя находится в ~/.ssh/config. Если создать отдельный файл proxy_ssh_config для использования прокси, это упростит переход между сетями.

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

# scp -F /home/user/proxy_ssh_config Label.pdf root@10.10.10.2:.

Заключение

Мы рассмотрели наиболее распространенные примеры работы с командой scp. Более подробную информацию можно получить в соответствующих man-страницах.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

ИТ Проффи

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: