Як використовувати команду SCP в Linux

Простий посібник, який допоможе вам перенести файли на віддалену систему з вашої системи Linux за допомогою команди scp.

SCP означає «Безпечна копія». scp це утиліта командного рядка, запропонована Linux, яка дозволяє передавати файли та каталоги з однієї машини на іншу через незахищену мережу.

Якщо ви хочете скопіювати файли з однієї системи в іншу, тоді scp може бути дуже хорошим варіантом для безпечної передачі файлів і каталогів. Коли дві комп’ютери, що спілкуються, з’єднані через одну мережу, використовується scp стає можливим.

Ви можете сильно покластися на scp Команда для конфіденційності та цілісності, оскільки файл, який передається, і пароль, який використовується для передачі, зашифровані. Жодна конфіденційна інформація не буде розкрита, навіть якщо хтось спробує стежити за трафіком, поки ця передача триває.

У цьому підручнику ми побачимо різні приклади scp команда. Ми також розглянемо деякі з часто використовуваних варіантів з scp команда.

Початок роботи з командою scp

Використання scp командою ви можете передавати файли/каталоги:

  • З локальної машини на віддалену.
  • Між двома віддаленими машинами.
  • З віддаленої машини на локальну.

Загальний синтаксис:

scp [Параметр] [назва вихідного_файлу] [user@destination_Host]:папка_призначення

Давайте по черзі розберемося з основними атрибутами цієї команди.

  • [source_file_name] Це вихідний файл, який ви хочете скопіювати.
  • [user@destination_Host] Це ім’я користувача віддаленої системи, куди ви хочете скопіювати файл. IP-адреса віддаленої машини також використовується в цьому атрибуті після «@«символ.
  • [тека призначення] Це каталог, куди ви хочете зберегти скопійований файл.

Примітка: товста кишка (:) символ використовується в синтаксисі, оскільки він розрізняє локальне та віддалене розташування. Ми використовуємо двокрапку (:) з віддаленою системою, щоб вказати каталог, до якого слід скопіювати файли. Якщо ми не вказуємо цільовий каталог, файли будуть скопійовані в домашній каталог користувача віддаленої системи.

Параметри, що використовуються з scp

Деякі з найпопулярніших варіантів, які використовуються з scp команди наведені нижче.

ВаріантОпис
-Cдозволити стиснення файлу для передачі
-vнадати докладний результат
-rкопіювати файли та каталоги рекурсивно
-стрзберегти дозволи, режими та час доступу до файлів
змінити порт за замовчуванням, який використовує scp команда

Ми побачимо приклади цих варіантів далі в підручнику.

Копіювання файлу з локальної системи у віддалену

scp дозволяє передавати файли з локальної системи у віддалену за допомогою наступного синтаксису. Це дозволяє передавати або завантажувати файли на віддалений сервер.

Загальний синтаксис:

scp [ім'я_файлу] remote_user@host:[папка_призначення]

приклад:

scp apache-tomcat-9.0.8.tar.gz [email protected]:gaurav

У цьому прикладі ми копіюємо файл «apache-tomcat-9.0.8.tar.gz» з локальної системи у віддалену систему з IP-адресою «143.110.178.221».

На віддаленій системі файл буде скопійовано в каталог під назвою gaurav.

Вихід:

gaurav@ubuntu:~$ scp apache-tomcat-9.0.8.tar.gz [email protected]:gaurav [email protected] пароль: apache-tomcat-9.0.8.tar.gz 1090% 795 KB /s 02:00 gaurav@ubuntu:~$ 

Давайте перевіримо вихід на віддалену систему для файлу.

root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav# ls apache-tomcat-9.0.8.tar.gz root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav#

Таким чином, файл успішно скопійовано у віддалену систему за допомогою файлу scp команда.

Копіювання кількох файлів на віддалену систему

У попередньому прикладі ми навчилися передавати файл у віддалену систему за допомогою scp команда. Тепер ми побачимо спосіб передачі кількох файлів з локальної системи на віддалену за допомогою цієї команди.

Загальний синтаксис:

scp [файл 1] [файл 2] [файл n] remote_username@remote_host:[конкретний каталог]

Давайте розберемося з цим простим процесом на прикладі.

приклад:

scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb [email protected]:gaurav

Тут у команді для копіювання на віддалену систему згадується кілька файлів.

Вихід:

gaurav@ubuntu:~$ scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb [email protected]:gaurav [email protected] пароль: ath.html 1090KB 1090 KB 90% 02 abc.txt 100% 0 0,0 КБ/с 00:00 ppa-purge_0.2.8+bzr56_all.deb 100% 4360 42,2 КБ/с 00:00 gaurav@ubuntu:~$

На віддаленій системі:

root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav# ls -l всього 9800 -rw-r--r-- 1 root root 0 5 жовтня 08:58 abc.txt -rw-r-- r-- 1 корінь 9818695 5 жовтня 08:35 apache-tomcat-9.0.8.tar.gz -rw-r--r-- 1 корінь 204057 5 жовтня 08:58 ath.html -rw-r-- r-- 1 root root 4360 5 жовтня 08:58 ppa-purge_0.2.8+bzr56_all.deb root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav#

Усі три файли тепер скопійовані на віддалену систему.

Копіювання каталогу у віддалену систему

Ви можете використовувати scp команду для копіювання каталогу з локальної системи у віддалену систему. Процес подібний до копіювання файлу. Щоб також скопіювати вміст каталогу, ви можете використовувати -r варіант з scp команда.

The -r Опція використовується для рекурсивного копіювання каталогу. Це означає, що всі підпапки та файли всередині каталогу також будуть скопійовані.

Загальний синтаксис:

scp -r [шлях до каталогу] ім'я_віддаленого_користувача@віддалений_хост:[цільовий_каталог]

приклад:

scp -r PycharmProjects [email protected]:gaurav

Вихід:

gaurav@ubuntu:~$ scp -r PycharmProjects [email protected]:gaurav [email protected] пароль: __main__.py 100% 623 7,8 КБ/с 00:01 КБ/с 00:02 Кбайт/с 00:00 00:00_0 . :00 completion.py 100% 2929 28,1 КБ/с 00:00 search.py ​​100% 4728 38,7 КБ/с 00:00 uninstall.py 100% 2963 32,5 КБ/с 00:00 hash.py 1010% s 00:00 check.py 100% 1430 16,8 КБ/с 00:00 configuration.py 100% 7125 50,4 КБ/с 00:00 show.py 100% 6289 49,8 КБ/с 00:00 download.py 662 10230% 8 КБ/с 00:00 gaurav@ubuntu:~$ 

Використання -r варіант з scp Команда копіює всі підпапки та файли в каталозі з локальної машини на віддалену систему.

Відображення детальної інформації про процес scp

Ви можете використовувати -v (малий регістр v) для відображення інформації про файли, які копіюються на віддаленій або локальній системі. Цей тип виводу також називають детальним виводом.

Коли використовується цей параметр, на екрані відображається повна інформація про налагодження файлу.

Загальний синтаксис:

scp -v [ім'я_файлу] user_name@user_host:

приклад:

scp -v apache-tomcat-9.0.8.tar.gz [email protected]:team

Вихід:

gaurav@ubuntu:~$ scp -v apache-tomcat-9.0.8.tar.gz [email protected]:team Виконується: програма /usr/bin/ssh хост 159.89.170.11, користувач root, команда scp -v -t команда OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 грудня 2017 debug1: читання даних конфігурації /home/gaurav/.ssh/config debug1: читання даних конфігурації /etc/ssh/ssh_config debug1: /etc_/sshig рядок 19: Застосування параметрів для * debug1: Підключення до 159.89.170.11 [159.89.170.11] порту 22. debug1: Підключення встановлено. debug1: key_load_public: немає такого файлу або каталогу debug1: файл ідентифікації /home/gaurav/.ssh/id_rsa type -1 apache-tomcat-9.0.8.tar.gz 100% 9589 КБ 99,8 КБ/с 01:36 debug_channel: client_reput channel 0 rtype exit-status reply 0 debug1: channel 0: free: client-session, nchannels 1 debug1: fd 0 очищення O_NONBLOCK debug1: fd 1 очищення O_NONBLOCK Передане: надіслано 9826736, отримано 4016 байт за секунду, надіслане за секунду 101133.9, отримано 41.3 debug1: статус виходу 0 gaurav@ubuntu:~$ 

Тут, у виводі, ви можете побачити, що інформація про налагодження файлу відображається на вашому терміналі, коли файл scp команда використовується з -v варіант.

Передача файлів між двома віддаленими хостами

Linux дозволяє підключатися до кількох віддалених хостів. Ви можете передавати файли та каталоги між двома віддаленими хостами за допомогою scp команда.

Загальний синтаксис:

scp remote_user_1@host_1:/[ім'я_файлу] remote_user_2@host_2:[folder_to_save]

Синтаксис може здатися трохи ширшим, але досить простим. Тут перша частина команди дає вхідні дані про віддаленого користувача, з якого потрібно скопіювати файл. двокрапка (:) і / використовується для вказівки імені файлу або імені каталогу, який має передаватися між двома віддаленими машинами.

Друга частина надає інформацію про цільову віддалену систему, куди потрібно скопіювати файл.

приклад:

scp -r [email protected]:gaurav [email protected]:/team

Тут ми будемо скопіювати каталог під назвою gaurav рекурсивно з локальної системи у віддалену систему. Файл буде скопійовано до папки «team» на віддаленій системі.

Вихід:

gaurav@ubuntu:~$ scp -r [email protected]:/gaurav [email protected]:/team [email protected] пароль: 1.py 100% 134 261.3KB/s змінні.py 100% 377 949,2 КБ/с 00:00 abc.txt 100% 0 0,0 КБ/с 00:00 ath.html 100% 199 КБ 41,8 МБ/с 00:00 gaurav@ubuntu:~$

Тут ми використали scp команда в локальній системі для передачі каталогу з ім’ям «gaurav» з одного віддаленого сервера на інший.

Передайте файли з віддаленої системи в локальну систему

Ви можете легко перенести файли або каталоги з віддаленої системи до локальної системи за допомогою scp команда. Простішими словами, ви можете завантажити декілька файлів або каталогів з віддаленого сервера на вашу локальну систему за допомогою scp команда.

Загальний синтаксис:

scp remote_username@user_host:/files/file.txt /[папка_локальної_системи]

Вихід:

gaurav@ubuntu:~$ scp [email protected]:how.txt . Пароль [email protected]: how.txt 100% 11 0,1 КБ/с 00:00 gaurav@ubuntu:~$

Тут я завантажив (скопіював) файл з віддаленого сервера в свій домашній каталог. Тому я використовував точку (.), щоб вказати в команді копіювання файлу в мій домашній каталог.

Зразок результату:

gaurav@ubuntu:~$ ls -l how.txt -rw-r--r-- 1 gaurav gaurav 11 жовтня 6 09:49 how.txt gaurav@ubuntu:~$ 

Тут файл тепер скопійовано до мого домашнього каталогу з віддаленого сервера.

Таким же чином ви можете завантажити кілька файлів або каталогів з віддаленого сервера за допомогою scp команду з відповідними параметрами.

Стиснення файлів для швидшої передачі

Іноді передача великих файлів може зайняти багато часу. Цю проблему можна вирішити під час використання scp команда з -C (великий регістр C) варіант.

Використання -C Опція стискає файли більшого розміру, що сприяє швидшій передачі та, таким чином, економить час.

Одним цікавим фактом щодо цієї опції є те, що файл копіюється з оригінальним розміром у системі призначення, але під час процесу передачі розмір стискається, щоб забезпечити швидшу передачу. Таким чином, стиснення здійснюється тільки в мережі.

Загальний синтаксис:

scp -C [ім'я_файлу] user_name@user_host:[target_folder]

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

Передача без опції -C:

gaurav@ubuntu:~$ scp -rv dlink [email protected]:team Виконання: програма /usr/bin/ssh хост 68.183.82.183, користувач root, команда scp -v -r -t команда OpenSSH_7.6p1 Ubuntu-4ubuntu 3, OpenSSL 1.0.2n 7 грудня 2017 debug1: Читання даних конфігурації /home/trinity/.ssh/config debug1: Читання даних конфігурації /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config рядок 19: Застосування параметрів для * debug1 : Підключення до 68.183.82.183 [68.183.82.183] порту 22. debug1: Підключення встановлено. debug1: client_input_channel_req: channel 0 rtype exit-status reply 0 debug1: channel 0: free: client-session, channels 1 debug1: fd 0 очищення O_NONBLOCK debug1: fd 1 очищення O_NONBLOCK Передано: надіслано 048 секунди, отримано 048 секунди, отримано за 075 за секунду: надіслано 100693,7, отримано 53,7 debug1: статус виходу 0 gaurav@ubuntu:~$ 

З наведеного вище виводу ми бачимо, що час, необхідний для передачі, становить 74,6 секунди. Ми спробуємо передати той самий файл за допомогою параметра -C і помітимо різницю.

Передача з опцією -C:

gaurav@ubuntu:~$ scp -Crv dlink [email protected]:team Виконання: програма /usr/bin/ssh хост 68.183.82.183, root користувача, команда scp -v -r -t команда OpenSSH_7.6p1 Ubuntu-4ub 3, OpenSSL 1.0.2n 7 грудня 2017 debug1: Читання даних конфігурації /home/trinity/.ssh/config debug1: Читання даних конфігурації /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config рядок 19: Застосування параметрів для * debug1 : Підключення до 68.183.82.183 [68.183.82.183] порту 22. debug1: Підключення встановлено. . . webupload.img 100% 1834 КБ 98,7 КБ/с 00:18 Режими надсилання файлів: C0664 1877552 router.img Приймач: C0664 1877552 router.img router.img 100% 1834 КБ: Режим надсилання файлу C0664 1877552: C0664 1877552 router.img router.img 100% 1834 КБ: 1060 файлу C0060. 3754103 DSL-2750U-Release-IN-T-01.00.07.zip Приймач: C0664 3754103 DSL-2750U-Release-IN-T-01.00.07.zip DSL-2750U-Release-IN-0p-T-07 100% 3666 КБ 218,5 КБ/с 00:16 Приймач: E debug1: client_input_channel_req: channel 0 rtype exit-status reply 0 debug1: channel 0: free: client-session, channels 1 debug1: fd NOgN 0 BLOCK clearing O de_BLOCK Передано: надіслано 7518864, отримано 3828 байт, за 51,0 секунди Байти в секунду: надіслано 100245,4, отримано 51,0 debug1: статус виходу 0 debug1: стиснути вихідні: вихідні дані 7511925, стиснуті 7513136 7513136, стиснуті 7513136, дані стиснення 1:w6, стиснення 147. 999, коефіцієнт 0,68 gaurav@ubuntu:~$

Тут ми можемо легко помітити, що за допомогою -C варіант з scp Команда дозволила нам стиснути файл через мережу, тим самим заощадивши час.

Використання іншого порту ssh для передачі файлів

Під час використання scp команда Розгорнутий порт за замовчуванням - це порт 22. Користувач має свободу налаштувати цей вибір порту. Ви можете використовувати (варіант P у верхньому регістрі) за допомогою scp команду, щоб використовувати порт за вашим вибором.

Загальний синтаксис:

cp -P [номер_нового_порту] [ім'я_файлу/ім'я_каталогу] віддалений_користувач@хост:[папка_призначення]

приклад:

scp -P 4248 dlink [email protected]:team

За допомогою наведеної вище команди файл буде передано на віддалений сервер. Але цього разу буде використаний порт порт 4248 замість стандартного порт 22.

Висновок

Пройшовши цей підручник, ми дізналися про динамічну природу scp команда, що використовується для передачі або копіювання файлів з однієї системи в іншу. Цей параметр також можна використовувати для завантаження файлів або каталогів з віддаленого сервера. Таким чином, ми можемо зробити висновок scp Команда виявляється дуже корисною для передачі файлів, коли вам доводиться керувати більш ніж однією системою, а також віддаленими серверами одночасно.

Категорія: Linux