Linux скопировать файл по ssh. Копирование файлов scp

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

[email protected] # scp file1.zip [email protected]:/home2/
или с любого места
[email protected] [/]# scp /home/file1.zip [email protected]:/home2/

[email protected]"s password:

т.е. scp файл пользователь@адрес_сервера (IP или домен):каталог на удаленном сервере куда необходимо это скопировать
если необходимо скопировать несколько файлов то их можно указать через пробел, т.е.: file1.zip file2.zip ...

2. Как копировать файлы и папки на удаленный сервер:

например вам нужно скопировать несколько каталогов и в каждом каталоге есть много файлов. Находимся на первом сервере 192.168.0.1

[email protected] [/]# scp -r /home/ [email protected]:/home2/
после ввода у вас запросит пароль к удаленному серверу.
[email protected]"s password:

будет все скопировано что находится в каталоге /home/
т.е. scp каталог_от_куда_копировать_папки_и_файлы пользователь@адрес_сервера (IP или домен):каталог на удаленном сервере куда необходимо это скопировать

3. Как копировать файл с удаленного сервера:

Например на удаленном сервере находится file1.zip в директории /home2/, копируем на локальный сервер (там где находитесь) в папку /home/ . Находимся на первом сервере 192.168.0.1

[email protected] [/]# scp [email protected]:/home2/file1.zip /home/
после ввода у вас запросит пароль к удаленному серверу.
[email protected]"s password:

т.е. мы скопируем с удаленного сервера файл file1.zip с папки /home2/ к себе в каталог /home/

4. Как копировать файлы и папки с удаленного сервера:

[email protected] [/]# scp -r [email protected]:/home2/ /home/
после ввода у вас запросит пароль к удаленному серверу.
[email protected]"s password:

т.е. скопируем с удаленного сервера все что находится в каталоге /home2/ к себе в каталог /home/

параметр: -r – рекурсивное копирование папок (включая подкаталоги);

5. Как копировать файлы с одного сервера на другой находясь на третем.

[email protected] [/]# scp [email protected]:/home/file1.zip [email protected]:/home2/
после ввода у вас запросит пароль к удаленным серверам.
[email protected]"s password:
[email protected]"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.

Если у вас есть домашний сервер или сервер в интернете, то вам понадобится способ для безопасного перемещения файлов между машинами. Между локальными машинами мы могли бы просто переносить данные с помощью флешки, но на удаленный сервер нужно передавать данные только через сеть. Есть много способов реализации этой задачи.

В этой статье мы рассмотрим как выполняется копирование файлов с помощью утилиты 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 один из таких инструментов.

Иногда бывает так, что доступ к удаленному компьютеру есть только по 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-соединений) — это лучший способ обойти ограничения, установленные сетевым администратором.

Вместо конечного пути можно использовать точку

Статьи по теме: