Рассмотрим как использовать команду scp (Secure Copy Command). С помощью нее можно скопировать файлы или каталоги между двумя машинами. А поскольку данные и пароль шифруются при передаче, это не позволит злоумышленнику перехватить ваш трафик. Чтобы была возможность передавать файлы с помощью данной утилиты необходимо, чтобы на сервере был включен ssh доступ, поэтому потребуется знать логин и пароль (или иметь настроенный для входа ssh ключ) для доступа на сервер.
Синтаксис команды SCP
Общий синтаксис выглядит следующим образом:
$ scp options user1@host1:file user2@host2:file
Список основных опций выглядит следующим образом:
- -1 – использовать протокол SSH1
- -2 – использовать протокол SSH2
- -P – порт удаленного хоста
- -C – включить сжатие
- -l – установить ограничение скорости в кбит/сек
- -o – задать нужную опцию SSH
- -p – сохранять время модификации
- -r – рекурсивное копирование директорий
- -v – более подробный режим
Примеры копирования файлов с локальной машины на удаленную
Следующая команда копирует файл с локальной машины на удаленную:
$ scp file.txt username@example.ru:/remote/directory/
Здесь файл file.txt из текущей директории будет передан на удаленную машину. В качестве имени пользователя для удаленной машины будет использоваться username, в качестве хоста example.ru (можно также использовать ip адрес), /remote/directory/ путь до папки на удаленной машине.
Если вход на сервер настроен по паролю, потребуется его ввести при выполнении команды.
Для сохранения файла под другим именем требуется указать полный путь к файлу на удаленной машине:
$ scp file.txt username@10.0.0.1:/remote/directory/filename.txt
Если используется другой ssh порт, можно использовать опцию -P:
$ scp -P 20223 file.txt username@example.ru:/remote/directory/filename.txt
Полностью скопировать папку:
$ scp -r /local/directory username@example.ru:/remote/directory/
Опция -r указывает на рекурсивное копирование директории.
Примеры копирования файлов с удаленной машины на локальную
Чтобы скачать с удаленной машины файл или папку на локальную, необходимо указать адрес локальной машины в качестве источника:
$ scp username@example.ru:/remote/directory/filename.txt /local/directory
С помощью данной команды мы скачаем файл filename.txt в папку /local/directory на нашем компьютере.
Примеры копирования файлов с удаленной машины на другую удаленную машину
Чтобы выполнить передачу файла с одной удаленной машины на другую, можем воспользоваться следующей командой:
$ scp user1@host1.ru:/directory/file.txt user2@host2.ru:/directory/
При передаче файлов между двумя удаленными машинами, при выполнении команды, пароль будет запрошен дважды.