Команда scp: как скопировать файлы на сервер и обратно
scp копирует файлы между вашим компьютером и сервером по SSH — тем же входом, тем же паролем или ключом. Команду набирают на своём компьютере, а не на сервере. Ниже — как отправить и скачать файл и папку и как исправить ошибки.
Содержание 8
Что сделать прямо сейчас
- Откройте терминал на своём компьютере: в Windows — PowerShell, на Mac — Терминал. Как это сделать — в статье Как открыть терминал. К серверу подключаться не нужно.
- Перейдите в папку с файлом командой cd, например
cd Desktop, если файл лежит на рабочем столе. - Отправьте файл в домашнюю папку на сервере:
scp site.zip ivan@ВАШ_IP:/home/ivan/. Вместоivan— ваш пользователь на сервере, вместоВАШ_IP— адрес сервера из панели провайдера. - Введите пароль пользователя на сервере, если scp его спросит. Символы при вводе не видны — так и должно быть.
- Дождитесь строки со 100% — файл на сервере.
Как устроена команда
scp site.zip ivan@ВАШ_IP:/home/ivan/| Часть | Что значит |
|---|---|
scp | команда |
site.zip | что копировать — файл на вашем компьютере |
ivan@ВАШ_IP | пользователь и адрес сервера, как при входе по SSH |
: | двоеточие отделяет сервер от пути на нём — без него scp скопирует файл на вашем же компьютере |
/home/ivan/ | куда положить файл на сервере |
Первым пишут, откуда копировать, вторым — куда. Путь после двоеточия, который начинается не с /, считается от домашней папки пользователя: ivan@ВАШ_IP: без пути — это и есть домашняя папка.
Отправить и скачать
| Задача | Команда |
|---|---|
| Отправить файл на сервер | scp site.zip ivan@ВАШ_IP:/home/ivan/ |
| Отправить папку | scp -r site ivan@ВАШ_IP:/home/ivan/ |
| Отправить несколько файлов | scp a.txt b.txt ivan@ВАШ_IP:/home/ivan/ |
| Скачать файл в текущую папку | scp ivan@ВАШ_IP:/home/ivan/backup.tar.gz . |
| Скачать папку | scp -r ivan@ВАШ_IP:/home/ivan/backup . |
Точка в конце команды скачивания — текущая папка на вашем компьютере. Вместо неё можно указать другую, например Desktop.
Ключи scp
| Ключ | Что делает |
|---|---|
-r | копировать папку со всем содержимым |
-P 2222 | порт SSH, если он не 22 — большая буква P |
-p | сохранить у файлов время изменения и права — маленькая p |
-i ~/.ssh/id_ed25519 | войти по этому ключу |
-C | сжимать данные при передаче |
-l 8000 | ограничить скорость: число — в килобитах в секунду |
-q | не показывать строку с процентами |
-v | подробно писать, что происходит, — для поиска ошибки |
Ключи пишут сразу после scp, до файлов: scp -r -P 2222 site ivan@ВАШ_IP:/home/ivan/.
Если вы завели файл config, вместо ivan@ВАШ_IP хватит короткого имени: scp site.zip myvps:/home/ivan/. Как его завести — в инструкции по SSH, раздел «Короткое имя вместо IP: файл config».
Как положить файлы в папку сайта
Папка сайта /var/www/example.com принадлежит другому пользователю — root или www-data, если владельца не меняли, — и ваш пользователь писать в неё не может. Поэтому сначала отправьте файл в домашнюю папку, а потом перенесите на сервере через sudo:
- На своём компьютере:
scp site.zip ivan@ВАШ_IP:/home/ivan/. - Подключитесь к серверу:
ssh ivan@ВАШ_IP. - Перенесите файл:
sudo mv /home/ivan/site.zip /var/www/example.com/. - Распакуйте архив — как, рассказано в статье Как распаковать архив tar.gz и zip.
- Проверьте права на файлы сайта — Права на файлы сайта на VPS.
Подробнее о команде mv — в статье cp, mv, rm и mkdir.
Где ещё скопировать файлы
scp ставится вместе с ssh: если в вашем терминале работает команда ssh, работает и scp. Начиная с OpenSSH 9.0 scp передаёт файлы по протоколу SFTP. Если сервер старый и SFTP не поддерживает, добавьте ключ -O: он включает прежний протокол SCP.
Если удобнее мышкой, подойдут программы с протоколом SFTP — они перечислены в инструкции по SSH, раздел «Как передать файлы на сервер». Для больших папок и повторного копирования удобнее Команда rsync: он передаёт только изменившиеся файлы.
Ошибки и как их исправить
| Ответ | Что значит | Что сделать |
|---|---|---|
scp: dest open "/var/www/example.com/site.zip": Permission denied | нет прав писать в эту папку на сервере | отправьте в домашнюю папку |
scp: stat local "site.zip": No such file or directory | в текущей папке на вашем компьютере нет такого файла | перейдите в папку с файлом или укажите полный путь |
scp: local "site" is not a regular file | вы отправляете папку без -r | добавьте -r |
scp: download /home/ivan/backup: not a regular file | вы скачиваете папку без -r | добавьте -r |
scp: /home/ivan/backup.tar.gz: No such file or directory | на сервере нет такого файла | проверьте путь на сервере командой ls |
Permission denied (publickey) | сервер не принял ключ | разбор ошибки |
Connection refused | на этом порту SSH не отвечает | проверьте порт и ключ -P — разбор |
Connection timed out | сервер не отвечает | разбор |
Could not resolve hostname | опечатка в адресе или в имени из config | разбор |
Тексты ошибок приведены для OpenSSH 9.6, в других версиях слова могут немного отличаться. Если файл с сервера не находится, а путь кажется верным, проверьте большие и маленькие буквы: в Linux Site.zip и site.zip — разные файлы.
Источники
- Справка scp для Ubuntu 24.04 — запись [user@]host:[path], протокол SFTP по умолчанию, ключи -r, -P, -p, -i, -C, -l, -q, -v и -O.
- Заметки к выпуску OpenSSH 9.0 — scp перешёл на протокол SFTP по умолчанию, ключ -O возвращает прежний.
- Исходный код OpenSSH 9.6: scp.c — тексты stat local, failed to upload file и No such file or directory.
- Исходный код OpenSSH 9.6: sftp-client.c — тексты dest open, is not a regular file и not a regular file.
Сверено 11 октября 2026 года.
Что почитать дальше
- Команда rsyncкопировать большие папки и только изменения.
- Как подключиться к VPS по SSHвход, ключи и файл config.
- Как распаковать архив tar.gz и zipраспаковать архив на сервере.
- Команды Linux для новичкашпаргалка по командам.
Проверено и обновлено: 11.10.2026