Select Page

10 команд SCP для перемещения файлов/папок в Linux

10 команд SCP для перемещения файлов/папок в Linux

Linux администратор должен знать среду CLI. Поскольку режим GUI режиме в Linux серверах не является обязательным для установки. SSH – самый популярный протокол, который позволяет включить Linux администратору управление серверами через пульт дистанционного управления в защищенном режиме. Встроенные с SSH командами – SCP команды. SCP используется для копирования файла(ов) между серверами в защищенном режиме.

Эта команда читается как “copy source_file_name” в “destination_folder” на “destination_host” используя “username account“.

Основной синтаксис SCP

scp source_file_name username@destination_host:destination_folder

Команда SCP имеет много параметров, которые вы можете использовать. Вот параметры, которые могут полезны для ежедневного использования.

Обеспечение детальной информации о SCP процессе, используя параметр -v

Основная команда SCP без параметров будет копировать файлы в фоновом режиме. Пользователь ничего не увидит, пока процесс не завершится или если возникли какие-то ошибки. Вы можете использовать “-v” для печати отладочной информации в экране. Это может помочь вам настроить соединения, аутентификации и устранить проблемы конфигурации.

pungki@mint ~/Documents $ scp -v Label.pdf [email protected]:.

Пример выходных данных

Executing: program /usr/bin/ssh host 202.x.x.x, user mrarianto, command scp -v -t .
OpenSSH_6.0p1 Debian-3, OpenSSL 1.0.1c 10 May 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 202.x.x.x [202.x.x.x] port 22.
debug1: Connection established.
debug1: Host '202.x.x.x' is known and matches the RSA host key.
debug1: Found key in /home/pungki/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: Next authentication method: password
[email protected]'s password:
debug1: Authentication succeeded (password).
Authenticated to 202.x.x.x ([202.x.x.x]:22).
Sending file modes: C0770 3760348 Label.pdf
Sink: C0770 3760348 Label.pdf
Label.pdf 100% 3672KB 136.0KB/s 00:27
Transferred: sent 3766304, received 3000 bytes, in 65.2 seconds
Bytes per second: sent 57766.4, received 46.0
debug1: Exit status 0

Обеспечение времени модификации, времени доступа и режимов с исходными файлами

Параметр “-p” поможет вам в этом. Оценка времени и скорости соединения будут появляться на экране.

pungki@mint ~/Documents $ scp -p Label.pdf [email protected]:.

Пример выходных данных

[email protected]'s password:
Label.pdf 100% 3672KB 126.6KB/s 00:29

Ускорить передачу файлов, используя параметр -С

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

Взгляните на эти команды. Тут используется один файл 93 Mb.

pungki@mint ~/Documents $ scp -pv messages.log [email protected]:.

Пример выходных данных

Executing: program /usr/bin/ssh host 202.x.x.x, user mrarianto, command scp -v -p -t .
OpenSSH_6.0p1 Debian-3, OpenSSL 1.0.1c 10 May 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 202.x.x.x [202.x.x.x] port 22.
debug1: Connection established.
debug1: identity file /home/pungki/.ssh/id_rsa type -1
debug1: Found key in /home/pungki/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: Trying private key: /home/pungki/.ssh/id_rsa
debug1: Next authentication method: password
[email protected]'s password:
debug1: Authentication succeeded (password).
Authenticated to 202.x.x.x ([202.x.x.x]:22).
debug1: Sending command: scp -v -p -t .
File mtime 1323853868 atime 1380425711
Sending file timestamps: T1323853868 0 1380425711 0
messages.log 100% 93MB 58.6KB/s 27:05
Transferred: sent 97614832, received 25976 bytes, in 1661.3 seconds
Bytes per second: sent 58758.4, received 15.6
debug1: Exit status 0

Копирование файлов без параметра “-C” будет 1661,3 секунды. Ниже вы можете сравнить результат с командой с помощью параметра “-C“.

pungki@mint ~/Documents $ scp -Cpv messages.log [email protected]:.

Пример выходных данных

Executing: program /usr/bin/ssh host 202.x.x.x, user mrarianto, command scp -v -p -t .
OpenSSH_6.0p1 Debian-3, OpenSSL 1.0.1c 10 May 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 202.x.x.x [202.x.x.x] port 22.
debug1: Connection established.
debug1: identity file /home/pungki/.ssh/id_rsa type -1
debug1: Host '202.x.x.x' is known and matches the RSA host key.
debug1: Found key in /home/pungki/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: Next authentication method: publickey
debug1: Trying private key: /home/pungki/.ssh/id_rsa
debug1: Next authentication method: password
[email protected]'s password:
debug1: Enabling compression at level 6.
debug1: Authentication succeeded (password).
Authenticated to 202.x.x.x ([202.x.x.x]:22).
debug1: channel 0: new [client-session]
debug1: Sending command: scp -v -p -t .
File mtime 1323853868 atime 1380428748
Sending file timestamps: T1323853868 0 1380428748 0
Sink: T1323853868 0 1380428748 0
Sending file modes: C0600 97517300 messages.log
messages.log 100% 93MB 602.7KB/s 02:38
Transferred: sent 8905840, received 15768 bytes, in 162.5 seconds
Bytes per second: sent 54813.9, received 97.0
debug1: Exit status 0
debug1: compress outgoing: raw data 97571111, compressed 8806191, factor 0.09
debug1: compress incoming: raw data 7885, compressed 3821, factor 0.48

Как вы видите, при использовании сжатия, процесс передачи осуществляется за 162,5 секунды. Это в 10 раз быстрее, если не использовать параметр “-C“. Если вы копируете много файлов по сети, то параметр “” поможет вам скорее скопировать.

Но стоит заметить, что метод сжатия будет работать не на всех файлах. Если исходный файл уже сжат, то еще раз сжиматься он не будет. Такие файлы как .zip, .rar, pictures, и .iso не реагируют на параметр “-C“.

Выбрать другой шифр для шифрования файлов

По умолчанию SCP использует “AES-128” для шифрования файлов. Если вы хотите изменить на иной шифр для шифровки, вы можете использовать параметр ““.

pungki@mint ~/Documents $ scp -c 3des Label.pdf [email protected]:.

[email protected]'s password:
Label.pdf 100% 3672KB 282.5KB/s 00:13

Перед командой укажите SCP использовать 3des algorithm для шифрования файлов. Пожалуйста, будьте осторожны и внимательны, так как нужно использовать параметр ““, а не “-C“.

Ограничение полосы пропускания bandwidth

Другой параметр, который может быть полезным – параметр “-l“. Параметр “-l ” будет ограничивать пропускную способность в использовании. Это полезно, если вы ваш скрипт автоматически копирует много файлов, но вам не нужно, чтобы пропускная способность снизилась.

pungki@mint ~/Documents $ scp -l 400 Label.pdf [email protected]:.

[email protected]'s password:
Label.pdf 100% 3672KB 50.3KB/s 01:13

Значение 400 после параметра “-l” означает, что мы ограничиваем объем трафика для процесса SCP до 50 кб/сек. Единственное, что следует помнить, что пропускная способность указана в килобит/сек (kbps). Это означает, что 8 бит равны 1 байт.

В то же время как SCP рассчитывает в килобайт/сек (KB/s). Так что если вы хотите ограничить полосу пропускания для SCP максимум только 50 KB/s, вам необходимо установить его в 50 х 8 = 400.

Укажите конкретный порт для использования с SCP

Обычно SCP использует порт 22 в качестве порта по умолчанию. Но в целях безопасности вы можете изменить порт на другой. Например, мы используем порт 2249. Для этого команда должна быть такой.

pungki@mint ~/Documents $ scp -P 2249 Label.pdf [email protected]:.

[email protected]'s password:
Label.pdf 100% 3672KB 262.3KB/s 00:14

Убедитесь, что тут используется большая буква “P“, не маленькая “р“, так как “р” уже используется для просмотра времени и режима.

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

Иногда нам нужно скопировать каталог и все файлы/каталоги внутри него. Намного удобнее, если можно это сделать по одной команде. Суппорт SCP использует параметр “-r”.

pungki@mint ~/Documents $ scp -r documents [email protected]:.

[email protected]'s password:
Label.pdf 100% 3672KB 282.5KB/s 00:13
scp.txt 100% 10KB 9.8KB/s 00:00

Пока проходит процесса копирования, на целевом сервере вы должны найти папку с именем “documents” со всеми файлами. Эта папка создается автоматически.

Отключить работу счетчика и алерты

Если вы не хотите видеть счетчик и разные алерты от SCP, вы можете отключить их, используя параметр “-q“. Вот пример.

pungki@mint ~/Documents $ scp -q Label.pdf [email protected]:.

[email protected]'s password:
pungki@mint ~/Documents $

Как вы можете eвидеть, после ввода пароля уже нет никакой информации о процессе SCP. После того, как процесс завершится, вы увидите подсказку снова.

Копирование файлов с помощью SCP через прокси

Прокси-сервер обычно используется в офисе. Понятно, что SCP прокси не настроен. Если ваш енвайрмент использует прокси-сервер, вам нужно велеть SCP общаться с прокси-сервером.

Вот скрипт. Прокси адрес 10.0.96.6 и прокси-порт – 8080. Также реализована прокси аутентификация пользователя. Сначала необходимо создать файл “~/.ssh/config”. Следующий шаг – поместите эту команду внутри него.

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

Потом вам нужно создать файл “~/.ssh/proxyauth” с контентом.

myusername:mypassword

После этого вы можете сделать SCP обычным.

Обратите внимание, что corkscrew может быть не установленным на вашей системе. На моем Linux Mint мне нужно установить его, используя стандартную процедуру установки Linux Mint.

$ apt-get install corkscrew

Для других систем, основанных на yum, пользователи могут установить corkscrew с помощью следующей команды yum.

# yum install corkscrew

Поскольку файл “~/.ssh/proxyauth” содержит ваш “username” и “password” в незашифрованном формате, пожалуйста, убедитесь, что файл может быть доступна только вам.

Выбор различных ssh_config файлов

Для мобильных пользователей, которые часто переключаются между сетью компании и сетью общего пользования, очень неудобно каждый раз изменять настройки в SCP. Лучше будет, если мы можем поставить различные ssh_config файлы в соответствии с нашими потребностями.

Вот пример скрипта

Используется прокси-сервер в сети компании, но не в сети общего пользования и вы регулярно включаете сети.

pungki@mint ~/Documents $ scp -F /home/pungki/proxy_ssh_config Label.pdf

[email protected]:.
[email protected]'s password:
Label.pdf 100% 3672KB 282.5KB/s 00:13

По умолчанию файл “ssh_config” для пользователя будет размещен в “~/.ssh/config“. Создание конкретного “ssh_config” файла с прокси-совместимым, упростит для вам переключение между сетями.

Когда вы находитесь на сети компании, вы можете использовать параметр “-F“. Когда вы находитесь на сети общего пользования, вы можете скипнуть параметр “-F“.

About The Author

Leave a reply

Ваш адрес email не будет опубликован.