Способы переноса файлов между серверами
В качестве примера представим следующую ситуацию:
На сервере А есть архив mysite.tar.gz с файлами сайта, который нужно перенести на сервер Б.
Используя хостинг виртуальных серверов, у вас есть два варианта подобного переноса:
При помощи FTP или SFTP протоколов.
В случае выбора этого способа действия будут следующими:
- Подключаемся по FTP / SFTP к серверу А.
- Скачиваем архив c сервера А на ПК.
- Подключаемся по FTP / SFTP к серверу Б.
- Загружаем архив с ПК на сервер Б в необходимую директорию.
При помощи утилиты SCP
Этот способ достаточно удобен по причине того, что отпадает необходимость копирования данных на промежуточное хранилище (в данном случае — ПК). Копирование файла происходит напрямую с одного сервера на другой и для выполнения этого действия используется абсолютно не сложная команда:
Пример этой команды реализует копирование архива mysite.tar.gz в директорию /var/www/html/, которая расположена на сервере с IP: 11.11.11.11. Порт подключения используется 22.
Стоит отметить, что эта утилита позволяет копировать сразу несколько файлов. В этом случае файлы указываются следующим образом:
Также, эта утилита может копировать и папку, но в этом случае необходимо использовать параметр –r, который включает рекурсивное копирование всех файлов и папок в указанной директории. Попытка скопировать папку без указания этого параметра завершится ошибкой «Not a regular file». Пример корректной команды копирования папки приведен ниже:
В результате папка с именем directory вместе с её содержимым будет скопирована в директорию /var/www/html/, расположенную на сервере 11.11.11.11.
Теперь вы знаете 2 новых способа переноса данных между серверами. Если есть вопросы по работе с архивами, то рекомендуем ознакомиться с нашей статьей Создание и распаковка архивов в Linux.
Копирование файлов scp
Если у вас есть домашний сервер или сервер в интернете, то вам понадобится способ для безопасного перемещения файлов между машинами. Между локальными машинами мы могли бы просто переносить данные с помощью флешки, но на удаленный сервер нужно передавать данные только через сеть. Есть много способов реализации этой задачи.
В этой статье мы рассмотрим как выполняется копирование файлов с помощью утилиты scp (Secure Copy Command), а также что из себя представляет команда Linux scp. При передаче файлы шифруются, так что больше никто не сможет получить к ним доступ и самое интересное, что вам не нужно настраивать FTP или другое дополнительное программное обеспечение. Будет достаточно сервера SSH.
Что такое SCP?
Команда scp — это утилита, которая работает по протоколу SSH, а значит, все что вам нужно для передачи файла на компьютер, это чтобы на нем был запущен SSH сервер, а также вы должны знать логин и пароль для подключения к нему. С помощью команды scp вы можете не только перемещать файлы между локальной и удаленной системой, но и между двумя удаленными системами. Для этого тоже будет достаточно знать пароли от них. И в отличие от Rsync вам не нужно авторизоваться на одном из серверов.
Копирование файлов scp
Эта статья рассчитана в первую очередь на начинающих, поэтому я попытаюсь объяснять все как можно подробнее. Перед тем, как мы перейдем к практике, нужно рассмотреть общий синтаксис команды:
$ scp опции пользователь1@хост1 : файл пользователь2@хост2: файл
Опции утилиты больше касаются протокола SSH и настраивают общее ее поведение. Дальше следует адрес первого и второго файла. Каждый из них может быть расположен как на локальной, так и на удаленной машине. А теперь рассмотрим основные опции, которые могут нам понадобиться:
- -1 — использовать протокол SSH1;
- -2 — использовать протокол SSH2;
- -B — пакетный режим для передачи нескольких файлов;
- -C — включить сжатие;
- — l — установить ограничение скорости в кбит/сек;
- -o — задать нужную опцию SSH;
- -p — сохранять время модификации;
- -r — рекурсивное копирование директорий;
- -v — более подробный режим.
scp /home/sergiy/file root@losst.ru:/root/
В качестве пользователя нужно использовать любого пользователя, который есть на сервере. Вместо IP вы можете также домен сервера. Только необходимо, чтобы у выбранного пользователя были права записи в указанную папку.
С помощью опции -r вы можете скопировать на удаленную машину целый каталог. Команда будет выглядеть вот так:
scp -r /home/sergiy/photos root@losst.ru:/root/
Убедитесь, что у исходного каталога нет косой черты, а у каталога назначения она должна обязательно быть. Немного изменив синтаксис с косой чертой можно передать все файлы из каталога на удаленный сервер:
scp -r /home/sergiy/photos/* root@losst.ru:/root/
Если поменять местами локальный путь и сервер, то вы сможете копировать файлы scp c удаленного сервера на локальный компьютер:
scp root@losst.ru:/root/file /home/sergiy/
Таким же самым образом вы можете копирование файлов scp или папок с сервера:
scp -r root@losst.ru:/root/photos /home/sergiy/
Обратите внимание, что папка, в которую вы собираетесь копировать должна завершаться косой чертой, иначе папка, которую вы копируете запишется вместо той, в которую нужно скопировать.
Чтобы скачать файл scp из одного сервера на другой, просто необходимо указать данные аутентификации на каждом из них. Например, скопируем один файл:
scp root@losst.ru:/home/root/index.html root@losst.ru:/home/root/www/
Скопируем папку с того же удаленного сервера:
scp root@losst.ru:/root/photos root@losst.ru:/home/root/www/
Выводы
В этой статье мы рассмотрели как выполняется передача файлов scp, как это работает и что вы можете сделать с помощью этой утилиты. Как вы видите, перемещать файлы с одного сервера на другой очень просто. В Linux достаточно понять основы чтобы начать работать эффективнее! А команда scp один из таких инструментов.
Как передавать файлы с одного Linux сервера на другой
сообщество редакторов, исследователей и специалистов
wikiHow работает по принципу вики, а это значит, что многие наши статьи написаны несколькими авторами. При создании этой статьи над ее редактированием и улучшением работали авторы-волонтеры.
Количество просмотров этой статьи: 7650.
В Linux среде с несколькими серверами многие задачи предполагают перемещение одного или нескольких файлов с одного сервера на другой. В зависимости от количества файлов, которые вы должны переместить, есть несколько команд, которые могут вам помочь. . Предположим для этих обсуждений, что наши серверы — alice и madhat, и что наш пользователь на alice – это rabbit (кролик), и наш пользователь на madhat — fieldmouse (полевая мышка).
Что делать, если у вас есть большой «беспорядок» с файлами и каталогами для копирования? Вы можете использовать команду «tar» чтобы создать один файл, а затем скопировать этот файл, как указано выше, а затем использовать tar, чтобы распространить его на другом сервере . Но это похоже на то. не Unix-подобные. Там должен быть способ сделать это за один шаг, не так ли? Ну, конечно!
EВведите pipe вашей любимой оболочки. Мы все еще можем использовать tar, чтобы упаковать нужные нам файлы, а затем использовать SSH, чтобы получить их в другой системе (что и SCP использует под оболочками), и tar с другой стороны, чтобы распространить файлы обратно. Но зачем тратить время и пространство, создавая сам файл tar, когда мы могли бы просто создать pipe, которая охватывает две системы и передает данные tar через нее?
Используя тот же каталог, что и в предыдущем примере, попробуйте «tar -cf — mydir/* | ssh fieldmouse@madhat ‘tar -xf -‘»
EnMaN › Блог › Перенос файлов и папок с помощью SCP
SCP (Secure Copy Protocol) — Линукс команда для защищенного копирования файлов или папок на удаленный компьютер (сервер) или с него, используя для этого протокол SSH (Secure Shell). SCP является составной частью пакета OpenSSH. Благодаря использованию ssh, SCP является отличной заменой для небезопасного протокола FTP, которой широко используется в Интернете.
Копируем файл на удаленный сервер:
Заходим в директорию от куда необходимо скопировать файл/файлы, например file1.zip в директории /home/ , необходимо скопировать на удаленный компьютер в папку /home2/ . Находимся на первом сервере 192.168.0.1
scp file1.zip root 192 .168.0.2:/home2/
или с любого места
scp /home/file1.zip root 192 .168.0.2:/home2/
после ввода у вас запросит пароль к удаленному серверу.
root 192 .168.0.2’s password:
т.е. scp файл пользователь@адрес_сервера (IP или домен):каталог на удаленном сервере куда необходимо это скопировать
если необходимо скопировать несколько файлов то их можно указать через пробел, т.е.: file1.zip file2.zip …
Копируем файлы и папки на удаленный сервер:
например вам нужно скопировать несколько каталогов и в каждом каталоге есть много файлов. Находимся на первом сервере 192.168.0.1
scp -r /home/ root 192 .168.0.2:/home2/
после ввода у вас запросит пароль к удаленному серверу.
root 192 .168.0.2’s password:
будет все скопировано что находится в каталоге /home/
т.е. scp каталог_от_куда_копировать_папки_и_файлы пользователь@адрес_сервера (IP или домен):каталог на удаленном сервере куда необходимо это скопировать
параметр: -r – рекурсивное копирование папок (включая подкаталоги);
Копируем файл с удаленного сервера:
Например на удаленном сервере находится file1.zip в директории /home2/, копируем на локальный сервер (там где находитесь) в папку /home/ . Находимся на первом сервере 192.168.0.1
scp root 192 .168.0.2:/home2/file1.zip /home/
после ввода у вас запросит пароль к удаленному серверу.
root 192 .168.0.2’s password:
т.е. мы скопируем с удаленного сервера файл file1.zip с папки /home2/ к себе в каталог /home/
Копируем файлы и папки с удаленного сервера:
scp -r root 192 .168.0.2:/home2/ /home/
после ввода у вас запросит пароль к удаленному серверу.
root 192 .168.0.2’s password:
т.е. скопируем с удаленного сервера все что находится в каталоге /home2/ к себе в каталог /home/
параметр: -r – рекурсивное копирование папок (включая подкаталоги);
Копируем файлы с одного сервера на другой находясь на третем.
scp root 192 .168.0.1:/home/file1.zip root 192 .168.0.2:/home2/
после ввода у вас запросит пароль к удаленным серверам.
root 192 .168.0.1’s password:
root 192 .168.0.2’s password:
т.е. мы скопируем с одного удаленного сервера (192.168.0.1) файл /home/file1.zip на другой удаленный сервере (192.168.0.2) в папку /home2/
находясь на третем сервере (192.168.0.3). Можно копировать файлы а так же и папки, используя параметр -r
Замечание о скорости копирования
По умолчанию scp использует при передаче данных алгоритм шифрования Triple-DES. Можно несколько увеличить скорость передачи, включив алгоритм Blowfish, для этого в командной строке следует добавить -c blowfish:
scp -c blowfish некий_файл ваш_логин@имя_хоста.ru: