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 може да се използва за безопасно споделяне на файлове със сътрудници или членове на екипа на различни места.
Синтаксис на командите на 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 в посочената локална директория. Изходният и целевият път са същите като преди.
Пример
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 от локалната директория до указаната дестинация на отдалечения сървър.
Пример
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
#14. Копиране на файлове и запазване на символни връзки
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 командите за системен администратор