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

Сподели

Linux администраторите трябва да са запознати със средата на командния ред. От GUI (Графичен потребителски интерфейс) режим в Linux сървъри не е обичайно да се инсталира.

SSH може да е най-популярният протокол, позволяващ на Linux администраторите да управляват сървърите по отдалечен защитен начин. Вграден с SSH команда има SCP команда, която се използва за копиране на файл(ове) между сървъри по защитен начин.

Основен синтаксис на SCP команда

Командата по-долу ще се чете като копие „име_на_изходен_файл“в”целева_папка“в”дестинация_хост” използвайки “потребителско име” сметка.

scp source_file_name [email protected]_host:destination_folder

Има много параметри в SCP команда, която можете да използвате. Ето параметрите, които могат да се използват при ежедневна употреба.

Сигурно прехвърляне на файлове в Linux

Основното SCP команда без параметри ще копира файловете във фонов режим. Потребителите няма да видят нищо, освен ако процесът не е завършен или се появи някаква грешка.

Можете да използвате „-v” параметър за отпечатване на информация за отстраняване на грешки на екрана. Може да ви помогне да отстраните проблеми с връзката, удостоверяването и конфигурацията.

Копиране на файл от локален хост към отдалечен сървър

Следната команда копира файл “scp-cheatsheet.pdf” от локална към отдалечена Linux система под /начало/tecmint указател.

$ scp -v scp-cheatsheet.pdf [email protected]:/home/tecmint/.

Примерен изход:

SCP – Копиране на файл към отдалечен Linux сървър
Executing: program /usr/bin/ssh host 192.168.0.183, user tecmint, command scp -v -t /home/tecmint/.
OpenSSH_8.2p1 Ubuntu-4ubuntu0.5, OpenSSL 1.1.1f  31 Mar 2020
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug1: Connecting to 192.168.0.183 [192.168.0.183] port 22.
debug1: Connection established.
debug1: identity file /home/tecmint/.ssh/id_rsa type -1
debug1: identity file /home/tecmint/.ssh/id_rsa-cert type -1
debug1: identity file /home/tecmint/.ssh/id_dsa type -1
debug1: identity file /home/tecmint/.ssh/id_dsa-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519 type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519_sk type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519_sk-cert type -1
debug1: identity file /home/tecmint/.ssh/id_xmss type -1
...

Копирайте файл от отдалечен хост на локален хост

Следната команда копира файл “ssh-cheatsheet.pdf” от отдалечен хост към локална система под /начало/tecmint указател.

$ scp -v [email protected]:/home/ravi/ssh-cheatsheet.pdf /home/tecmint/.

Примерен изход:

SCP – Копиране на файл в локална система
Executing: program /usr/bin/ssh host 192.168.0.183, user tecmint, command scp -v -f /home/ravi/ssh-cheatsheet.pdf
OpenSSH_8.2p1 Ubuntu-4ubuntu0.5, OpenSSL 1.1.1f  31 Mar 2020
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug1: Connecting to 192.168.0.183 [192.168.0.183] port 22.
debug1: Connection established.
debug1: identity file /home/tecmint/.ssh/id_rsa type -1
debug1: identity file /home/tecmint/.ssh/id_rsa-cert type -1
debug1: identity file /home/tecmint/.ssh/id_dsa type -1
debug1: identity file /home/tecmint/.ssh/id_dsa-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519 type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519_sk type -1
...

Копирайте файл от отдалечен хост на друг хост

Следната команда копира файл “ssh-cheatsheet.pdf” от отдалечен хост към друга отдалечена хост система под /начало/tecmint указател.

$ scp -v [email protected]:/home/ravi/ssh-cheatsheet.pdf [email protected]:/home/anusha/.

Копирайте файлове с оригинална дата и час на създаване

-p” параметърът ще запази оригиналната модификация на файловете и времето за достъп, докато копирате файловете, заедно с очакваното време и скоростта на връзката ще се появят на екрана.

$ scp -p scp-cheatsheet.pdf [email protected]:/home/tecmint/.

Примерен изход:

SCP – Запазване на времеви клейма на файлове
[email protected]'s password: 
scp-cheatsheet.pdf                                                                                                                                                                 100%  531   721.4KB/s   00:00    

Scp компресиране при копиране на файлове

Един от параметрите, които могат да ускорят прехвърлянето на вашите файлове, е „-C”, който се използва за компресиране на вашите файлове в движение. Уникалното е, че компресията се случва само в мрежата. Когато файлът пристигне на целевия сървър, той ще се върне към оригиналния размер, както преди компресирането.

Разгледайте тези команди. Той използва един файл на 93 Mb.

$ scp -pv messages.log [email protected]:.

Примерен изход:

SCP прехвърля файл без компресия
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" параметър.

$ scp -Cpv messages.log [email protected]:.

Примерен изход:

SCP – Прехвърля файлове с компресия
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” параметър. Ако копирате много файлове в мрежата, „-C” ще ви помогне да намалите общото време, от което се нуждаете.

Нещото, което трябва да забележим е, че методът на компресиране няма да работи с никакви файлове. Когато изходният файл вече е компресиран, няма да намерите подобрение там. Файлове като .zip, .rar, снимкии .iso файловете няма да бъдат засегнати от „-C” параметър.

Променете SCP Cipher на Encrypt Files

По подразбиране, SCP използва “AES-128” за шифроване на файлове. Ако искате да промените на друг шифър, за да го шифровате, можете да използвате „-c” параметър.

Разгледайте тази команда.

$ scp -c 3des Label.pdf [email protected]:.

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

Горната команда казва SCP да използвате 3des алгоритъм за шифроване на файла. Моля, внимавайте, че този параметър използва „-c” не “-C“.

Ограничаване на използването на честотната лента с SCP команда

Друг параметър, който може да бъде полезен, е „-l” параметър. „” ще ограничи използваната честотна лента. Ще бъде полезно, ако направите скрипт за автоматизация, за да копирате много файлове, но не искате честотната лента да се източва от SCP процес.

$ scp -l 400 Label.pdf [email protected]:.

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

The 400 стойност зад „-l” означава, че ограничаваме честотната лента за SCP процес само до 50 KB/сек.

Едно нещо, което трябва да запомните е, че честотната лента е посочена в килобита/сек (kbps). Означава, че 8 бита са равни на 1 байт.

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

SCP с различен порт

обикновено, SCP използва порт 22 като порт по подразбиране, но от съображения за сигурност можете да промените порта на друг порт. Например, ние използваме порт 2249.

Тогава командата трябва да е така.

$ scp -P 2249 Label.pdf [email protected]:.

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

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

SCP – Копиране на файлове и директории рекурсивно

Понякога трябва да копираме директорията и всичко останало файлове/директории вътре в него. Ще бъде по-добре, ако можем да го направим с една команда, използвайки „-r” параметър, който копира рекурсивно цялата директория.

$ 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

Когато процесът на копиране приключи, на целевия сървър ще намерите директория с име „документи” с всичките му файлове. Папката “документи” се създава автоматично.

SCP – Деактивиране на съобщенията за напредък

Ако изберете да не виждате индикатора за напредъка и предупредителните/диагностичните съобщения от SCP, можете да го деактивирате, като използвате „-q” параметър. Ето един пример.

$ scp -q Label.pdf [email protected]:.

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

Както можете да видите, след като въведете паролата, няма информация за 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 прозрачно, както обикновено.

Моля, обърнете внимание, че тирбушон може все още да не е инсталиран на вашата система. На моя Linux Mintпърво трябва да го инсталирам, като използвам стандартната процедура за инсталиране на Linux Mint.

$ apt-get install corkscrew

За други системи, базирани на yum, потребителите могат да инсталират тирбушон, като използват следната команда yum.

# yum install corkscrew

Друго нещо е, че тъй като „~/.ssh/proxyauth” файлът съдържа вашия “потребителско име” и “парола” във формат на ясен текст, моля, уверете се, че файлът е достъпен само за вас.

Изберете различен ssh_config файл

За мобилните потребители, които често превключват между фирмените мрежи и обществените мрежи, ще бъде трудно винаги да променят настройките в SCP. По-добре е, ако можем да поставим различен ssh_config файл, който да отговаря на нашите нужди.

Проксито се използва в мрежата на компанията, но не и в обществената мрежа и вие редовно превключвате мрежи.

$ 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” параметър.

Това е всичко SCP. Можеш да видиш man страници на SCP за повече подробности. Моля, не се колебайте да оставяте коментари и предложения.

Публикациите се превеждат автоматично с google translate

Loading


Сподели