Копирование файлов scp. Удаленное копирование файлов с помощью SCP
Иногда бывает так, что доступ к удаленному компьютеру есть только по ssh. А надо как-то обмениваться файлами, заливать конфигурационные файлы и т.д. В таком случае используют команду scp
. Программа scp используется для копирования файлов с одного хоста на другой. Она действует практически аналогично программе ssh
. Т.е. использует аутентификацию пользователя и обеспечивает шифрование передаваемых данных. Когда файл передается или записывается на компьютер scp запрашивает пароль от ssh соединения пользователя, а также может работать по .
Если у вас стоит ssh клиент, то устанавливать ничего не потребуется, а иначе устанавливаем пакет Openssh.
Консольное использование scp
В следующем примере файл readme.txt копируется из текущего каталога пользователя в корневой каталог пользователя mik на удаленном хосте 192.168.0.17
Mik@gw:~$ scp readme.txt [email protected]: [email protected]"s password: readme.txt 100% 0 0.0KB/s 00:00
Обратите внимание, что команда заканчивается на : . Если после двоеточия ничего не указывать, то это будет считаться корневой директорией пользователя (/home/user) удаленного компьютера. После двоеточия обычно указывают название папки на удаленном хосте, или измененное название имени файла, который мы передаем. К примеру:
Scp readme.txt [email protected]:./temp/upload/
Мы скопировали наш readme.txt в папку, которая находится на удаленном компьютере по пути /home/mik/temp/upload/. Не забывайте в команде scp писать пути относительно пользовательской директории /home/user
А вот так
Scp readme.txt [email protected]:./temp/upload/test.txt
мы скопировали файл и одновременно переименовали его в test.txt.
При копировании файла с удаленной системы, просто переставьте местами пути назначения
Scp [email protected]:./temp/upload/test.txt readme.txt
Будьте внимательны, если в то место куда вы копируете файлы файл с таким названием уже существует, то он перетрется новым файлом без предупреждения.
На заметку вам несколько ключей, которые возможно понадобятся с работой scp
.
- -q отключает вывод каких либо данных на экран при копировании
- -r копирует целые каталоги
- -v подробный информативный режим
- -C включает режим сжатия данных
- -P
Указывает настандартный порт ssh
Пример использования дополнительных ключей scp .
Mik@m1k:~$ scp -P6666 -v ./temp/upload/test.txt mik@gw: Executing: program /usr/bin/ssh host gw, user mik, command scp -v -t . OpenSSH_5.2p1, OpenSSL 0.9.8k 25 Mar 2009 debug1: Reading configuration data /home/mik/.ssh/config debug1: Applying options for * debug1: Applying options for gw debug1: Reading configuration data /etc/ssh/ssh_config debug1: auto-mux: Trying existing master Sending file modes: C0644 0 test.txt Sink: C0644 0 test.txt test.txt 100% 0 0.0KB/s 00:00
Midnight Commander & scp
В программе Midnight Commander (команда запуска mc
) существует простейший графический интерфейс для работы через scp.
После запуска, нажимаем F9(Меню) и выбираем Правая панель или Левая панель > Shell-соединение. В появившейся строке набираем параметры соединения. Подсказка синтаксиса, через F1.
SCP (Secure Copy Protocol) — Линукс команда для защищенного копирования файлов или папок на удаленный компьютер (сервер) или с него, используя для этого протокол SSH (Secure Shell). SCP является составной частью пакета OpenSSH. Благодаря использованию ssh, SCP является отличной заменой для небезопасного протокола FTP, которой широко используется в Интернете.
Иногда возникает задача передачи файлов с одного сервера на другой.
Приведу примеры как ее использовать.
Заходим на сервер используя SSH протокол, например через программу — PuTTY (http://www.chiark.greenend.org.uk/~sgtatham/putty/)
1. Как копировать файл на удаленный сервер:
Заходим в директорию от куда необходимо скопировать файл/файлы, например file1.zip в директории /home/ , необходимо скопировать на удаленный компьютер в папку /home2/ . Находимся на первом сервере 192.168.0.1
т.е. scp файл пользователь@адрес_сервера (IP или домен):каталог на удаленном сервере куда необходимо это скопировать
если необходимо скопировать несколько файлов то их можно указать через пробел, т.е.: file1.zip file2.zip …
2. Как копировать файлы и папки на удаленный сервер:
например вам нужно скопировать несколько каталогов и в каждом каталоге есть много файлов. Находимся на первом сервере 192.168.0.1
будет все скопировано что находится в каталоге /home/
т.е. scp каталог_от_куда_копировать_папки_и_файлы пользователь@адрес_сервера (IP или домен):каталог на удаленном сервере куда необходимо это скопировать
3. Как копировать файл с удаленного сервера:
Например на удаленном сервере находится file1.zip в директории /home2/, копируем на локальный сервер (там где находитесь) в папку /home/ . Находимся на первом сервере 192.168.0.1
т.е. мы скопируем с удаленного сервера файл file1.zip с папки /home2/ к себе в каталог /home/
4. Как копировать файлы и папки с удаленного сервера:
т.е. скопируем с удаленного сервера все что находится в каталоге /home2/ к себе в каталог /home/
параметр: -r – рекурсивное копирование папок (включая подкаталоги);
5. Как копировать файлы с одного сервера на другой находясь на третем.
[/]# scp :/home/file1.zip :/home2/
после ввода у вас запросит пароль к удаленным серверам.
’s password:
2.168.0.2’s password:
т.е. мы скопируем с одного удаленного сервера (192.168.0.1) файл /home/file1.zip на другой удаленный сервере (192.168.0.2) в папку /home2/
находясь на третем сервере (192.168.0.3). Можно копировать файлы а так же и папки, используя параметр -r
Это конечно мало кому понадобится:) но такое возможно.
Возможные параметры SCP:
R – рекурсивное копирование папок (включая подкаталоги);
P port – использовать нестандартный порт (по умолчанию 22) – этот параметр следует использовать, если сервер ожидает соединения на нестандартном порту. Этот параметр может быть полезен при соединении из сети, защищенной файрволлом. Запуск SSH-сервера на порту 443 (используемом для защищенных HTTP-соединений) — это лучший способ обойти ограничения, установленные сетевым администратором.
Вместо конечного пути можно использовать точку
Если у вас есть домашний сервер или сервер в интернете, то вам понадобится способ для безопасного перемещения файлов между машинами. Между локальными машинами мы могли бы просто переносить данные с помощью флешки, но на удаленный сервер нужно передавать данные только через сеть. Есть много способов реализации этой задачи.
В этой статье мы рассмотрим как выполняется копирование файлов с помощью утилиты scp (Secure Copy Command), а также что из себя представляет команда Linux scp. При передаче файлы шифруются, так что больше никто не сможет получить к ним доступ и самое интересное, что вам не нужно настраивать FTP или другое дополнительное программное обеспечение. Будет достаточно сервера SSH.
Команда scp — это утилита, которая работает по протоколу SSH, а значит, все что вам нужно для передачи файла на компьютер, это чтобы на нем был запущен SSH сервер, а также вы должны знать логин и пароль для подключения к нему. С помощью команды scp вы можете не только перемещать файлы между локальной и удаленной системой, но и между двумя удаленными системами. Для этого тоже будет достаточно знать пароли от них. И в отличие от Rsync вам не нужно авторизоваться на одном из серверов.
Копирование файлов scp
Эта статья рассчитана в первую очередь на начинающих, поэтому я попытаюсь объяснять все как можно подробнее. Перед тем, как мы перейдем к практике, нужно рассмотреть общий синтаксис команды:
$ scp опции пользователь1@хост1: файл пользователь2@хост2: файл
Опции утилиты больше касаются протокола SSH и настраивают общее ее поведение. Дальше следует адрес первого и второго файла. Каждый из них может быть расположен как на локальной, так и на удаленной машине. А теперь рассмотрим основные опции, которые могут нам понадобиться:
- -1
- -2
- -B
- -C — включить сжатие;
- — l
- -o — задать нужную опцию SSH;
- -p
- -r
- -v — более подробный режим.
- -1 — использовать протокол SSH1;
- -2 — использовать протокол SSH2;
- -B — пакетный режим для передачи нескольких файлов;
- -C — включить сжатие;
- — l — установить ограничение скорости в кбит/сек;
- -o — задать нужную опцию SSH;
- -p — сохранять время модификации;
- -r — рекурсивное копирование директорий;
- -v — более подробный режим.
scp /home/sergiy/file root@сайт:/root/
В качестве пользователя нужно использовать любого пользователя, который есть на сервере. Вместо IP вы можете также домен сервера. Только необходимо, чтобы у выбранного пользователя были права записи в указанную папку.
С помощью опции -r вы можете скопировать на удаленную машину целый каталог. Команда будет выглядеть вот так:
scp -r /home/sergiy/photos root@сайт:/root/
Убедитесь, что у исходного каталога нет косой черты, а у каталога назначения она должна обязательно быть. Немного изменив синтаксис с косой чертой можно передать все файлы из каталога на удаленный сервер:
scp -r /home/sergiy/photos/* root@сайт:/root/
Если поменять местами локальный путь и сервер, то вы сможете копировать файлы scp c удаленного сервера на локальный компьютер:
scp root@сайт:/root/file /home/sergiy/
Таким же самым образом вы можете копирование файлов scp или папок с сервера:
scp -r root@сайт:/root/photos /home/sergiy/
Обратите внимание, что папка, в которую вы собираетесь копировать должна завершаться косой чертой, иначе папка, которую вы копируете запишется вместо той, в которую нужно скопировать.
Чтобы скачать файл scp из одного сервера на другой, просто необходимо указать данные аутентификации на каждом из них. Например, скопируем один файл:
scp root@сайт:/home/root/index.html root@сайт:/home/root/www/
Скопируем папку с того же удаленного сервера:
scp root@сайт:/root/photos root@сайт:/home/root/www/
Выводы
В этой статье мы рассмотрели как выполняется передача файлов scp, как это работает и что вы можете сделать с помощью этой утилиты. Как вы видите, перемещать файлы с одного сервера на другой очень просто. В Linux достаточно понять основы чтобы начать работать эффективнее! А команда scp один из таких инструментов.