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“.
Свежие комментарии