Битлента
Сетевые команды и утилиты5 мин чтения·

scp: как копировать файлы между компьютерами по SSH

Как копировать файлы и папки между своими компьютерами командой scp: синтаксис, ключи -r, -P, -i, -p, пути в Windows, скорость, ограничения и альтернативы.

Кратко

Синтаксис scp источник назначение: scp file.txt user@198.51.100.10:/home/user/ отправляет файл, scp user@198.51.100.10:/home/user/file.txt . скачивает. Для папок нужен ключ -r, для порта -P, для ключа -i.

Синтаксис и логика команды

scp копирует файлы по защищённому соединению SSH и использует тот же вход, что и обычная команда ssh: пароль или ключ. Запись всегда состоит из двух частей: откуда и куда. Удалённая сторона обозначается в виде пользователь, знак «собака», адрес, двоеточие и путь. Локальная сторона — просто путь.

Отправка на сервер: scp report.pdf user@198.51.100.10:/home/user/docs/. Скачивание с сервера: scp user@198.51.100.10:/var/log/app.log ./. Точка означает текущую папку. Если после двоеточия ничего нет, файл попадёт в домашний каталог пользователя: scp file.txt user@198.51.100.10:. Адреса в примерах из блока документации, подставьте свои.

Важное предупреждение: scp перезаписывает файлы с тем же именем без запроса подтверждения. Перед копированием в занятую папку проверьте содержимое, а для важных данных держите копию.

Ключи и их значения

КлючЧто делает
-rКопировать папки рекурсивно
-P портПорт SSH (заглавная буква)
-i файлФайл закрытого ключа
-pСохранить время изменения и права
-CСжимать данные при передаче
-qТихий режим без прогресса
-l NОграничить скорость, N в килобитах в секунду
-vПодробный вывод для отладки
-o опцияПередать параметр SSH, например -o ConnectTimeout=10

Частая ошибка — путаница ключей порта: у ssh порт задаётся строчной -p, а у scp заглавной -P, потому что строчная -p занята сохранением времени. Ещё одна: ключ -r нужно ставить до путей, а не после. Пример для папки: scp -r ./project user@198.51.100.10:/home/user/. Если имя папки на конце содержит косую черту, поведение зависит от системы, поэтому после копирования проверьте результат.

Пути с пробелами заключайте в кавычки и следите за экранированием: для удалённой стороны нужны кавычки внутри кавычек либо обратная косая черта перед пробелом, иначе оболочка разделит путь на два аргумента. Проще избегать пробелов в именах.

Порядок действий при первом копировании

  1. Убедитесь, что вход по SSH работает: ssh user@198.51.100.10 открывает оболочку. Если нет, настройте вход и ключи по соседней инструкции.
  2. Определите, откуда и куда идёт файл, и выпишите оба пути.
  3. Выполните команду. При первом подключении система спросит о доверии к отпечатку сервера. Сверьте его с известным вам значением и ответьте yes.
  4. Введите пароль либо парольную фразу ключа.
  5. Наблюдайте за полосой прогресса: имя файла, процент, объём, скорость и оставшееся время.
  6. Проверьте результат: размер и контрольную сумму, sha256sum в Linux, shasum -a 256 в macOS, Get-FileHash в PowerShell.

Для нескольких файлов используйте маски. В Linux и macOS оболочка раскрывает маску для локальной стороны, а для удалённой вам нужны кавычки: scp "user@198.51.100.10:/var/log/*.log" ./logs/. Без кавычек оболочка попытается раскрыть звёздочку локально и вернёт ошибку либо не то, что вы ожидали.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно

Windows, macOS и Linux

В Linux и macOS scp входит в комплект OpenSSH. В Windows 10 и 11 он идёт вместе с клиентом OpenSSH, который бывает включён по умолчанию либо ставится в разделе дополнительных компонентов. Вызов работает в PowerShell и командной строке.

Особенность Windows: диски записываются с двоеточием, и scp может принять букву диска за имя узла. Например, запись C:\data\file.txt в некоторых случаях трактуется неверно. Используйте прямые косые черты или относительные пути: scp ./file.txt user@198.51.100.10:/home/user/, либо указывайте путь к файлу вида /C:/data/file.txt по правилам вашей версии. Проверьте вариант на небольшом файле.

Заметьте: в новых версиях OpenSSH программа scp внутри может использовать протокол SFTP, а не старый механизм. Для пользователя различий почти нет, но поведение масок и специальных символов в путях может слегка отличаться, а нестандартные оболочки на сервере иногда мешают. Если копирование не работает при рабочем входе по ssh, попробуйте sftp.

Скорость, обрывы и альтернативы

Скорость копирования ограничена каналом и процессором: шифрование нагружает слабые устройства, например старые роутеры и одноплатные компьютеры. Ключ -C помогает на медленных каналах при текстовых файлах, но для уже сжатых данных бесполезен и может замедлить. Чтобы не перегружать канал, задайте -l.

У scp нет докачки: при обрыве придётся начинать сначала. Для больших объёмов и повторных синхронизаций подходят rsync поверх SSH, который передаёт только изменённое и может возобновлять передачу, и sftp с интерактивными командами. Для передачи внутри доверенной локальной сети без шифрования существует и nc, но это отдельная история.

Копируйте только на свои серверы и компьютеры. Не передавайте закрытые ключи и файлы с паролями в открытом виде, а после работы удаляйте временные копии. Если копирование останавливается с ошибкой доступа, проверьте права на удалённой папке: пользователь должен иметь право записи.

Типичные ошибки и их разбор

Сообщение Permission denied означает проблему с правами или входом: проверьте пользователя, пароль или ключ и права на удалённую папку. Сообщение No such file or directory говорит о неверном пути: путь на удалённой стороне считается от домашнего каталога, если не начинается с косой черты, поэтому перепроверьте начало пути. Сообщение Connection refused или таймаут указывает, что до сервера не дошли: неверный порт, выключен SSH, закрыт брандмауэр; проверьте порт командой nc -zv или Test-NetConnection.

Ошибка Host key verification failed возникает, когда отпечаток сервера не совпадает с сохранённым: сервер переустановили либо соединение перехватывают. Не удаляйте запись механически, а сначала убедитесь, что вы обращаетесь к нужному адресу. Сообщение о неизвестном ключе шифрования на старых серверах говорит о том, что клиент и сервер не смогли согласовать алгоритмы; обновите программное обеспечение сервера, вместо того чтобы включать устаревшие алгоритмы у клиента.

Если копирование обрывается на больших файлах, проверьте задержку соединения и включите ключи keep-alive через -o ServerAliveInterval=30. Так соединение не будет закрыто промежуточным устройством из-за простоя. Для копирования между двумя удалёнными серверами полезно знать, что данные, как правило, идут через ваш компьютер, поэтому скорость определяется вашим каналом.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно
scpsshкопирование файловкомандная строка

Часто задаваемые вопросы

Читайте также