16 типових команд SCP із прикладами копіювання файлів і папок

Протокол SCP тісно інтегрований з SSH, і їхні корені походять з однієї концепції.

SCP забезпечує конфіденційність та цілісність даних під час пересилання, функціонуючи як розширення протоколу SSH.

Для початку, розгляньмо механізм роботи 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 [параметри] [джерело] [призначення]

Пояснення синтаксису:

Параметри

Це додаткові позначки, які змінюють поведінку команди SCP. Різні параметри дозволяють налаштовувати процес передачі. Ось кілька типових варіантів:

-r: рекурсивне копіювання папок та їхнього вмісту.
-p: збереження прав доступу, міток часу та режимів вихідного файлу.
-P: вказання номера порту для підключення SSH.
-i: визначення файлу закритого ключа для автентифікації SSH.
-C: використання стиснення для пришвидшення передачі даних.
-l: обмеження пропускної здатності, що використовується для передачі (у Кбіт/с).
-v: докладний режим – відображення повідомлень про налагодження під час передачі.
-o: передає параметр клієнту SSH. Можна використовувати для вимкнення суворої перевірки ключа хоста.

Джерело

Джерело вказує на файл або папку, які необхідно скопіювати. Це може бути локальний або віддалений шлях – залежно від ситуації.

Призначення

Призначення вказує, куди потрібно скопіювати джерело. Як і джерело, це також може бути локальний або віддалений шлях.

Приклади команд

#1. Копіювання файлу з локального комп’ютера на віддалений сервер

scp /шлях/до/локального/файлу.txt користувач@віддаленийхост:/шлях/до/призначення/

/шлях/до/локального/файлу.txt: це вихідний файл, який потрібно скопіювати з локального комп’ютера.

користувач@віддаленийхост: замініть “користувач” на ім’я віддаленого користувача, а “віддаленийхост” на ім’я хоста або IP-адресу віддаленого сервера.

/шлях/до/призначення/: це шлях до папки призначення на віддаленому сервері, куди буде скопійовано файл.

Приклад:

У моєму випадку я обрав один віддалений сервер для передачі файлу.

Ім’я користувача віддаленого хосту: 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 користувач@віддаленийхост:/шлях/до/віддаленого/файлу.txt /шлях/до/локального/призначення/

Як і вище, замініть адресу користувача та віддаленого хоста.

Приклад:

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

Результат:

Це лише приклад результату в моєму випадку. Мітка часу залежить від швидкості з’єднання.

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

#3. Рекурсивне копіювання каталогу

scp користувач@віддаленийхост:/шлях/до/віддаленого/файлу.txt /шлях/до/локального/призначення/

Тут параметр ‘-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 /шлях/до/локального/*.txt користувач@віддаленийхост:/шлях/до/призначення/

*.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 /шлях/до/локального/файлу.txt користувач@віддаленийхост:/шлях/до/призначення/

Тут параметр ‘-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 /шлях/до/локального/файлу.txt користувач@віддаленийхост:/шлях/до/призначення/

Параметр “-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 /шлях/до/локального/файлу.txt користувач@віддаленийхост:/шлях/до/призначення/

Цей параметр ‘-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 /шлях/до/локального/файлу.txt користувач@віддаленийхост:/шлях/до/призначення/

Цей параметр ‘-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 користувач@віддаленийхост:/шлях/до/віддаленого/файлу.txt /шлях/до/локального/призначення/

Ті самі пояснення, що й у попередньому прикладі з детальним виводом, зі зміненими ролями локального та віддаленого місця.

Приклад:

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 /шлях/до/закрытого_ключа.pem /шлях/до/локального/файлу.txt користувач@віддаленийхост:/шлях/до/призначення/

Цей параметр “-i /шлях/до/закрытого_ключа.pem” вказує інший закритий ключ SSH для автентифікації.

Приклад:

scp -i /шлях/до/закрытого_ключа.pem /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop

Результат:

Якщо у вас є приватний ключ, можна використовувати його або залишити стандартний.

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

#11. Копіювання декількох файлів на віддалений сервер

scp файл1.txt файл2.txt користувач@віддаленийхост:/шлях/до/призначення/

Ця команда копіює файли 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 користувач@віддаленийхост:/шлях/до/віддаленого/файлу.txt /шлях/до/локального/нованазвафайлу.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 /шлях/до/локального/файлу.txt користувач@віддаленийхост:/шлях/до/призначення/

Цей параметр “-l” визначає обмеження пропускної здатності в Кбіт/с (у цьому випадку 1000 Кбіт/с) для передачі.

Приклад:

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 /шлях/до/локального/джерела/ користувач@віддаленийхост:/шлях