Утилита 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/