16 общи SCP команди с примери за копиране на файлове и папки

SCP е тясно свързан с SSH протокола и наистина е роден от същата идея.

SCP гарантира, че данните остават поверителни и неподправени по време на транзит като разширение на SSH протокола.

Първо, нека разберем как работи този SCP и след това ще видим scp командите.

Съдържание

Какво е SCP?

SCP означава протокол за защитено копиране.

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

Той се използва широко за сигурно прехвърляне на данни през мрежа. SCP разчита на SSH (Secure Shell), за да установи защитена връзка и да криптира данните по време на пренос.

Независимо дали трябва да преместите един файл или цяла директория, SCP предоставя надеждно решение за отдалечено прехвърляне на файлове.

Как работи SCP?

SCP е изграден върху SSH протокола – който е криптографски мрежов протокол за сигурно дистанционно влизане и изпълнение на команди. Той използва същите механизми за сигурност като SSH, включително криптиране и удостоверяване, за защита на данните по време на предаване.

Когато използва SCP, потребителят инициира команда за копиране на своята локална машина, която указва изходния файл и местоназначението на отдалечена машина. SCP установява SSH връзка с отдалечената система и след това сигурно копира файловете от източника до дестинацията.

Кога да използвате SCP?

SCP е особено полезен в следните сценарии.

Архивиране на отдалечен сървър

SCP ви позволява да архивирате файлове от отдалечен сървър на вашата локална машина или обратно, което гарантира излишък на данни и възстановяване след бедствие.

Внедряване на приложения

Той също така опростява процеса чрез сигурно копиране на необходимите файлове във всяка целева система при разполагане на приложения на множество сървъри,

Прехвърляне на големи файлове

SCP предлага надежден и сигурен алтернативен метод за предаване на данни за големи файлове, които може да са твърде големи за изпращане като прикачени файлове към имейл.

Сигурно споделяне на файлове

SCP гарантира, че данните се съхраняват криптирани по време на транзит, докато изпраща поверителни файлове на други хора.

Отдалечено сътрудничество

SCP може да се използва за безопасно споделяне на файлове със сътрудници или членове на екипа на различни места.

  7 безплатни ресурса за изучаване на облачни изчисления

Синтаксис на командите на SCP

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

Синтаксисът на командата SCP изглежда така:

scp [options] [source] [destination]

Обяснение на синтаксиса

Настроики

Това са незадължителни флагове, които променят поведението на SCP командата. Можете да използвате различни опции, за да персонализирате процеса на прехвърляне. Ето някои често срещани опции:

-r: Рекурсивно копира директории и тяхното съдържание.
-p: Запазване на разрешенията, времевите клейма и режимите на оригиналния файл.
-P: Указва номера на порта за SSH връзката.
-i: Указва файла с частен ключ за SSH удостоверяване.
-C: Използвайте компресиране, за да ускорите трансфера на данни.
-l: Ограничете честотната лента, използвана за прехвърляне (в Kbit/s).
-v: Подробен режим – показва съобщения за отстраняване на грешки по време на прехвърляне.
-o: Подава опция на SSH клиента. Може да се използва за деактивиране на стриктната проверка на ключовете на хоста.

Източник

Източникът указва файла или директорията, които искате да копирате. Това може да бъде локален път или отдалечен път – в зависимост от контекста.

Дестинация

Дестинацията указва къде искате да копирате източника. Подобно на източника, той също може да бъде локален път или отдалечен път.

Примери за команди

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

scp /path/to/local/file.txt user@remotehost:/path/to/destination/

/path/to/local/file.txt: Това е изходният файл, който искате да копирате от вашата локална машина.

user@remotehost: Заменете потребителя с името на отдалечения потребител и отдалечения хост с името на хоста или IP адреса на отдалечения сървър.

/path/to/destination/: Това е целевият път на отдалечения сървър, където файлът ще бъде копиран.

Пример

В моя случай съм избрал един отдалечен сървър за прехвърляне на файла.

Потребителско име на отдалечен хост – abhishekvarma

Адрес на отдалечен хост – 192.168.29.70

scp /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop

Докато се свързва с отдалечена машина, той иска паролата. Тук съм избрал zip файл за копиране.

Изход

И изходът ще изглежда така, ако няма грешка при свързване към отдалечен сървър.

sample.zip                                    100%   20KB  717.9KB/s   00:00

#2. Копирайте файл от отдалечената на локалната машина

scp user@remotehost:/path/to/remote/file.txt /path/to/local/destination/

Същото като по-горе, заменете адреса на потребителя и отдалечения хост.

Пример

scp [email protected]:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop

Изход

Това е само примерният резултат в моя случай. Времето варира в зависимост от скоростта на връзката.

sample.zip                                    100%   20KB  51.2KB/s   00:00

#3. Копирайте директория рекурсивно

scp user@remotehost:/path/to/remote/file.txt /path/to/local/destination/

Тук флагът ‘-r’ казва на SCP да копира директории рекурсивно (включително поддиректории и тяхното съдържание).

Пример

scp -r /home/vboxuser/Desktop [email protected]:/Users/abhishekvarma/Desktop

Тук споменах цялата директория за копиране на файловете.

Изход

sample.zip                                         100%   20KB    1.0MB/s   00:00
Screenshot from 2023-08-13 21-45-23.png            100%   27KB    1.5MB/s   00:00
.swp                                               100%   12KB  894.2KB/s   00:00
.help.swp                                          100%   12KB  780.4KB/s   00:00

#4. Копиране на файлове, съответстващи на модел

scp /path/to/local/*.txt user@remotehost:/path/to/destination/

*.txt – Това е образец със заместващ знак, който съответства на всички файлове с разширение .txt в посочената локална директория. Изходният и целевият път са същите като преди.

  6 начина за коригиране на грешката на контролната сума в WinRAR

Пример

scp /home/vboxuser/Desktop/locfolder/*.png [email protected]:/Users/abhishekvarma/Desktop

Изход

Ето, опитах с разширение .png.

Screenshot from 2023-08-13 21-45-23.png            100%   27KB    1.4MB/s   00:00
Screenshot from 2023-08-13 21-55-28.png            100%   24KB    1.7MB/s   00:00
Screenshot from 2023-08-13 22-04-03.png            100%   38KB    2.1MB/s   00:00

#5. Запазване на файловите атрибути

scp -p /path/to/local/file.txt user@remotehost:/path/to/destination/

Тук флагът ‘-p’ запазва времето за модификация, времето за достъп и режимите на изходния файл при копиране.

Пример

scp -p /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop

Изход

sample.zip                                         100%   20KB    420.0KB/s   00:00

#6. Посочете различен SSH порт

scp -P 22 /path/to/local/file.txt user@remotehost:/path/to/destination/

Флагът ‘-P’ указва различен SSH порт (22 в този случай) за SCP връзката. Можете да използвате всеки порт, който искате.

Пример

scp -P 22 /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop

Изход

sample.zip                                         100%   20KB    1.2MB/s   00:00

#7. Копиране с компресия

scp -C /path/to/local/file.txt user@remotehost:/path/to/destination/

Този флаг „-C“ позволява компресиране по време на прехвърлянето, потенциално намалявайки размера на прехвърлените данни. Адресът на източника и местоназначението са същите, както е обяснено по-рано.

Пример

scp -C /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop

Изход

sample.zip                                         100%   20KB    985.8KB/s   00:00

#8. Подробен изход за отстраняване на грешки

scp -v /path/to/local/file.txt user@remotehost:/path/to/destination/

Тази опция „-v“ активира подробния изход, който предоставя по-подробна информация по време на процеса на прехвърляне.

Пример

scp -v /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop

Изход

Примерният резултат ще изглежда така.

Executing: program /usr/bin/ssh host 192.168.29.70, user abhishekvarma, command scp -v -t /Users/abhishekvarma/Desktop OpenSSH_8.9p1 Ubuntu-3ubuntu0.3, OpenSSL 3.0.2 15 Mar 2022
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.29.70 [192.168.29.70] port 22. debug1: Connection established.
debug1: identity file /root/.ssh/id_rsa type -1
debug1: identity file /root/.ssh/id_rsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa type -1 debug1: identity file /root/.ssh/id_ecdsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa_sk type -1 debug1: identity file /root/.ssh/id_ecdsa_sk-cert type -1

#9. Копиране от отдалечено към локално с подробен изход

scp -v user@remotehost:/path/to/remote/file.txt /path/to/local/destination/

Същите обяснения като в предишния многословен пример, с разменени роли на локални и отдалечени местоположения.

Пример

scp -v [email protected]:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop

Изход

Резултатът ще изглежда така.

Executing: program /usr/bin/ssh host 192.168.29.70, user abhishekvarma, command scp -v -f /Users/abhishekvarma/Desktop/sample.zip OpenSSH_8.9p1 Ubuntu-3ubuntu0.3, OpenSSL 3.0.2 15 Mar 2022
debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug1: Connecting to 192.168.29.70 [192.168.29.70] port 22. debug1: Connection established.
debug1: identity file /root/.ssh/id_rsa type -1
debug1: identity file /root/.ssh/id_rsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa type -1 debug1: identity file /root/.ssh/id_ecdsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa_sk type -1 debug1: identity file /root/.ssh/id_ecdsa_sk-cert type -1

#10. Копирайте с помощта на различен SSH ключ

scp -i /path/to/private_key.pem /path/to/local/file.txt user@remotehost:/path/to/destination/

Този флаг „-i /path/to/private_key.pem“ указва различен частен SSH ключ за удостоверяване.

Пример

scp -i /path/to/private_key.pem /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop

Изход

Ако имате частен ключ, тогава можете да го използвате или в противен случай можете да използвате този по подразбиране.

sample.zip                                         100%   20KB    1.1MB/s   00:00

#11. Копирайте множество файлове на отдалечения сървър

scp file1.txt file2.txt user@remotehost:/path/to/destination/

Тази команда копира file1.txt и file2.txt от локалната директория до указаната дестинация на отдалечения сървър.

  9 инструмента за намиране и коригиране на уязвимости в сигурността на GraphQL

Пример

scp  /home/vboxuser/Desktop/image.png  /home/vboxuser/Desktop/sample.zip  [email protected]:/Users/abhishekvarma/Desktop 

Изход

image.png                                          100%   39KB    1.4MB/s   00:00
sample.zip                                         100%   20KB    1.5MB/s   00:00

#12. Копирайте отдалечен файл с различно име

scp user@remotehost:/path/to/remote/file.txt /path/to/local/newfilename.txt

Тази команда копира file.txt от отдалечения сървър в локалната директория, преименувайки го като newfilename.txt в процеса.

Пример

scp [email protected]:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop/newfile.zip

Изход

Старото и новото файлово разширение трябва да са еднакви, докато изпълнявате тази команда.

sample.zip                                         100%   20KB    28.7KB/s   00:00

#13. Копиране със специфичен лимит на честотната лента

scp -l 1000 /path/to/local/file.txt user@remotehost:/path/to/destination/

Този флаг ‘-l’ указва ограничение на честотната лента в Kbps (1000 Kbps в този случай) за прехвърлянето.

Пример

scp -l 300 /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop

Изход

sample.zip                                         100%   20KB    31.3KB/s   00:00
scp -rp /path/to/local/source/ user@remotehost:/path/to/destination/

Флагът ‘-p’ запазва файловите атрибути, а флагът -r рекурсивно копира директории. Тази команда също запазва символните връзки по време на копирането.

Пример

scp -rp /home/vboxuser/Desktop/image.png [email protected]:/Users/abhishekvarma/Desktop

Изход

image.png                                        100%   39KB    1.8MB/s   00:00

#15. Многословно копиране на файлове с компресиране

scp -vC /path/to/local/file.txt user@remotehost:/path/to/destination/

Тази команда комбинира както подробен изход (-v), така и компресия (-C) по време на прехвърлянето на файла.

Пример

scp -vC /home/vboxuser/Desktop/image.png [email protected]:/Users/abhishekvarma/Desktop

Изход

Резултатът ще изглежда така.

scp: debug1: fd 3 clearing O_NONBLOCK
Sending file modes: C0664 40050 image.png
Sink: C0664 40050 image.png
image.png
d 6 clearing O_NONBLOCK
scp: debug1: fd • clearing O_NONBLOCK
image.png
debug1: client_input_channel_req: channel ✪ type exit-status reply debug1: channel 0: free: client-session, channels 1
Transferred: sent 40220, received 2576 bytes, in 0.1 seconds
Bytes per second: sent 352570.0, received 22581.3
root@ubuntu: ~
debug1: Exit status 0
debug1: compress outgoing: raw data 40287, compressed 38198, factor 0.95 debug1: compress incoming: raw data 792, compressed 757, factor 0.96 

#16. Копиране между два отдалечени сървъра

Ако искате да прехвърлите файлове от един отдалечен сървър на друг, тогава можете да използвате тази команда.

scp user1@remotehost1:/path/to/remote/file.txt user2@remotehost2:/path/to/destination/

Тази команда директно прехвърля file.txt от remotehost1 към remotehost2.

Пример

scp user1@remotehost1:/path/to/remote/file.txt [email protected]:/Users/abhishekvarma/Desktop

Изход

file.txt                100%  512KB 512.0KB/s   00:00

Ако има някакви грешки или проблеми по време на прехвърлянето – изходът може да покаже съобщения за грешка, които предоставят информация какво се е объркало.

ssh: connect to host source.example.com port 22: Connection refused
lost connection

В този случай съобщението за грешка предполага, че SSH връзката към изходния сървър е отказана. Това може да се дължи на различни причини, като например неправилно име на хост, IP адрес, порт или проблеми с SSH конфигурацията.

ЧЗВ за SCP

Ето някои често задавани въпроси, свързани с SCP протокола, заедно с техните отговори.

По какво се различава SCP от FTP или SFTP?

FTP означава протокол за прехвърляне на файлове.

SFTP означава протокол за прехвърляне на файлове. И двете се използват за прехвърляне на файлове.

SCP работи през SSH и предлага както криптиране, така и удостоверяване в един протокол, което го прави по-сигурен и ефективен.

Кога трябва да използвам SCP?

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

SCP съвместим ли е с IPv6 адреси?

Да, SCP поддържа както IPv4, така и IPv6 адреси, което ви позволява да прехвърляте файлове през мрежи, които използват произволна схема за адресиране.

Заключение✍️

Надявам се, че сте намерили тази статия за полезна, за да научите за SCP и как работи.

Може също да ви е интересно да научите за Linux командите за системен администратор