Утилита scp

Утилита scp (SSH Copy) предназначена для копирования файлов с одного хоста на другой по сети. Использует она для этого протокол ssh.

Об утилите

Эта утилита обычно предустановлена в Linux системы. Во всяком случае в Debian или Ubuntu её дополнительно устанавливать не нужно. Она используется именно для копирования файлов по сети с использованием протокола SSH.

Так как эта утилита работает поверх протокола SSH, то и аутентификация используется от SSH. То есть мы можем использовать логин и пароль пользователя или SSH ключи.

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

Утилита scp может быть выполнена со следующими опциями:

    • -B — пакетный режим для работы в скриптах (не запрашивает логин или пароль, работает только с SSH ключами);
    • -C — включить сжатие;
    • -l <limit> — указать лимит скорости в Kbit/s;
    • -r — рекурсивное копирование (для копирования каталогов);
    • -4 — принудительно использовать IPv4;
    • -6 — принудительно использовать IPv6;
    • -3 — копировать с одного удалённого сервера на другой удалённый сервер через локальный хост. Без этой опции данные копируются напрямую между двумя удаленными хостами.

Ниже я покажу примеры использования этой утилиты.

Примеры использования

Локальный файл (каталог) на удалённый сервер

Для того чтобы скопировать локальный файл или каталог на удалённый сервер нужно вначале указать путь к локальному файлу (или каталогу), а затем логин@адрес и каталог на удалённом сервере. Если нужно скопировать каталог, то дополнительно используйте опцию -r:

$ scp file.txt root@192.168.0.5:/root/
$ scp -r /home/alex/documents root@192.168.0.5:/root/

Удалённый файл (каталог) на локальную машину

Для того чтобы скопировать удалённый файл к себе, нужно просто поменять пути местами. Сначала вы указываете удалённый путь, а затем локальный путь:

$ scp root@192.168.0.5:/root/file.txt /home/alex/
$ scp -r root@192.168.0.5:/root/documents /home/alex/

С одного удалённого сервера на другой

Для того чтобы скопировать файл или папку с одного удалённого сервера на другой нужно просто указать оба удалённых сервера. Обратите внимание что файл будет копироваться с одного сервера на другой, минуя ваш локальный компьютер.

Вот примеры:

$ scp root@192.168.0.5:/home/root/file.txt root@192.168.0.6:/home/root/
$ scp -r root@192.168.0.5:/root/documents root@192.168.0.6:/home/root/