Блог компанії 3v-Hosting

Команда Linux scp і приклади її використання

Адміністрування

6 хв.


Безпечна передача файлів між системами - одне з основних завдань системного адміністрування та розробки. Команда scp (безпечне копіювання), доступна в більшості Unix-подібних систем, включно з Linux-серверами, є найефективнішим способом копіювання файлів і каталогів між локальними й віддаленими системами по SSH. На відміну від традиційного cp для локального копіювання, scp призначена для безпечного передавання даних з використанням SSH-шифрування, що робить її особливо актуальною для віддалених операцій і автоматизованих скриптів у хостингових середовищах.

 

 

 

 

Основи синтаксису scp

 

Основний синтаксис команди scp має послідовну структуру, яку легко зрозуміти на кількох прикладах:

    scp [options] source destination

Джерелом і місцем призначення можуть бути локальні файли, каталоги або віддалені адреси, задані у форматі user@host:/path. Така гнучкість дає змогу scp копіювати в трьох загальних напрямках:

    - З локального на віддалений
    - З віддаленого на локальний
    - З однієї віддаленої системи на іншу (через локальну машину).


Наприклад, щоб завантажити локальний файл report.pdf на віддалений сервер:

    scp report.pdf [email protected]:/home/user/docs/


Щоб отримати файл з віддаленого сервера:

    scp [email protected]:/home/user/docs/report.pdf .


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

 

 

 


Передача каталогів за допомогою scp

 

За замовчуванням scp призначений для копіювання окремих файлів. Однак він може рекурсивно копіювати цілі каталоги за допомогою флага -r (recursive). Це дуже важливо при переміщенні великих файлових структур або резервному копіюванні папок між середовищами.

    scp -r project_folder/ user@server:/var/www/

Ця команда відправляє всю директорію project_folder за вказаним шляхом на віддалений сервер. Усі файли та підкаталоги зберігаються, а права доступу підтримуються, якщо вони явно не скасовані за допомогою додаткових прапорів.

 


 

Інші корисні статті з адміністрування в нашому Блозі:


    - Посібник із команди cat у Linux

    - Як встановити Nginx на Ubuntu 22.04

    - Встановлення та використання Virtualenv у Python3

    - Як встановити Node.js на Ubuntu 22.04

 


 

 


Загальні параметри для поліпшення передачі файлів

 

Команда scp містить низку прапорів, які можуть оптимізувати або контролювати поведінку процесу передачі файлів:

    -P <порт> Вказує порт, якщо віддалений SSH-сервер працює на нестандартному порту.
    -C Вмикає стиснення для прискорення передавання великих файлів по повільних з'єднаннях.
    -p Зберігає час модифікації, час доступу і режими вихідного файлу.
    -q Тихий режим. Пригнічує індикатор виконання та повідомлення про помилки.
    -l <ліміт> Обмежує використовувану смугу пропускання, задану в Кбіт/с.


Наприклад, передача файлів через нестандартний порт зі стисненням може мати такий вигляд:

    scp -P 2222 -C bigfile.tar.gz user@host:/data/

Ця команда передає файл через SSH-порт 2222 і застосовує стиснення для оптимізації пропускної здатності.

 

 

 

 


Міркування безпеки та найкращі практики

 

SCP загалом безпечний завдяки використанню SSH, але адміністратори мають переконатися, що віддалений SSH-сервер правильно налаштований для запобігання несанкціонованому доступу. Сувора автентифікація за ключем SSH краща, ніж вхід за паролем, особливо під час автоматизованого розгортання або конвеєрів CI/CD. Вимкнення входу root через SSH також є поширеною практикою для мінімізації ризиків.

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

 

 

 

 


Розширені сценарії використання в хостингу та робочих процесах DevOps

 

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

 

Розглянемо сценарій, у якому сценарій нічного резервного копіювання перекидає дампи баз даних із проміжного сервера на зовнішній вузол зберігання:

    scp /backups/db-$(date+%F).sql.gz backupuser@storage:/mnt/backups/

Подібні команди можна планувати через cron для автоматизації. У поєднанні з доступом за ключем SSH і зашифрованими файлами резервних копій це створює надійну процедуру резервного копіювання.

 


Ще один варіант використання - передача файлів між двома віддаленими хостами з третьої машини:

    scp user1@host1:/var/www/index.html user2@host2:/var/www/

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

 

 

 

 


Обмеження та альтернативні інструменти

 

Незважаючи на свою простоту, scp має обмеження. Він не підтримує функцію відновлення перерваної передачі, що може бути проблематично для великих файлів або нестабільних мережевих з'єднань. У ній також відсутні тонкі індикатори виконання або логіка синхронізації. Для цих цілей більш надійні такі інструменти, як rsync:

    rsync -avz -e ssh myfolder/ user@remote:/home/user/

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

 

 

 

 

Висновок

Команда scp є основною утилітою для безпечного передавання файлів у Linux і Unix-подібних системах. Вона поєднує в собі звичну команду cp і безпеку SSH, забезпечуючи прості, але ефективні віддалені операції з файлами. Системні адміністратори, розробники та хостинг-провайдери використовують scp для одноразової передачі, завдань розгортання та швидкої автоматизації. Хоча він може бути не найкращим рішенням для масштабної синхронізації, його зручність і універсальна присутність у сучасних системах роблять його надійним інструментом у багатьох робочих процесах.